1. 程式人生 > 其它 >2. SpringBoot整合Mybatis

2. SpringBoot整合Mybatis

本章內容基於SpringBoot入門:https://www.cnblogs.com/forelim/p/15379580.html

SpringBoot整合Mybatis

  1. 匯入依賴

    <!-- mysql -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.26</version>
    </dependency>
    <!-- mybatis啟動器 -->
    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>2.1.3</version>
    </dependency>
    <!-- 測試 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
    </dependency>
    <!-- 分頁外掛 -->
    <dependency>
        <groupId>com.github.pagehelper</groupId>
        <artifactId>pagehelper-spring-boot-starter</artifactId>
        <version>1.3.0</version>
    </dependency>
    
  2. 載入配置 application.yml

    # 埠號
    server:
      port: 8080
    
    # 資料來源
    spring:
      datasource:
        # 驅動
        driver-class-name: com.mysql.cj.jdbc.Driver
        # 路徑
        url: jdbc:mysql://localhost:3306/demo?useSSL=false&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
        # 使用者名稱
        username: root
        # 密碼
        password: mysql
    
    # mybatis配置
    mybatis:
      configuration:
        # 日誌
        log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
        # 下劃線轉駝峰
        map-underscore-to-camel-case: true
      # 別名包
      type-aliases-package: com.demo.entity
      # 對映檔案位置
      mapper-locations: classpath:mapper/*.xml
    
    # 分頁外掛
    pagehelper:
      # 資料庫
      helper-dialect: mysql
      # 合理化
      reasonable: true
      # 支援通過方法傳遞引數
      support-methods-arguments: true
      # 引數
      params: count==countSql
      # 傳入0時顯示全部資料
      page-size-zero: true
    
  3. Entity & Mapper

    public class Demo {
        private Integer id;
        private String name;
        private Integer age;
    
        public Integer getId() {
            return id;
        }
    
        public void setId(Integer id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public Integer getAge() {
            return age;
        }
    
        public void setAge(Integer age) {
            this.age = age;
        }
    
    }
    
    import com.demo.entity.Demo;
    import org.apache.ibatis.annotations.Mapper;
    
    import java.util.List;
    
    @Mapper
    // 如果mapper介面過多 可以在主啟動類上加上@MapperScanner("mapper介面包") 代替 @Mapper註解
    public interface DemoMapper {
        /**
         * 查詢全部
         * @return 列表
         */
        List<Demo> list();
    }
    
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <mapper namespace="com.demo.mapper.DemoMapper">
        <select id="list" resultType="demo">
            select id, name, age
            from t_demo
        </select>
    </mapper>
    
  4. 測試類

    import com.demo.entity.Demo;
    import com.github.pagehelper.PageHelper;
    import com.github.pagehelper.PageInfo;
    import org.junit.jupiter.api.Test;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.test.context.SpringBootTest;
    
    import java.util.List;
    
    @SpringBootTest
    public class DemoMapperTest {
    
        /**
         * 自動織入mapper介面
         */
        @Autowired
        private DemoMapper demoMapper;
        @Test
        void list() {
            // 分頁
            PageHelper.startPage(1,2);
            // 呼叫
            List<Demo> list = demoMapper.list();
            // 封裝分頁物件
            PageInfo<Demo> demoPageInfo = new PageInfo<>(list);
        }
    }
    
  5. 成功!