Spring集成MyBatis和代碼生成工具

MyBatis是一個數據庫持久層框架,採用ORM架構,映射實體和數據庫,對JDBC進行封裝,支持定製化SQL、存儲過程以及高級映射,使得開發者只需關注SQL語句自己,而不須要處理驅動加載、建立和管理鏈接等複雜的過程。
java

 

MyBatis經過xml或註解的方式將要執行的操做配置起來,並經過Java對象和SQL動態參數映射,生成要執行的SQL語句,MyBatis框架執行後將結果映射爲Java對象返回。mysql

 

MyBatis Plus對MyBatis進一步加強、簡化開發和提升效率。本文分享MyBatis Plus和代碼生成器的集成方法,並封裝一個測試接口git


代碼文件github

功能要點spring

SpringBoot集成MyBatis, MyBatisPlussql

pom.xml數據庫

引入MyBatis和MyBatis Plus依賴mybatis-spring-boot-starter, mybatis-plus-boot-starter, mybatis-plus-generatormybatis

application.yml架構

配置數據源app

代碼生成工具

MyBatisPlusGenerator.java

MyBatis Plus提供了易用高效的代碼生成工具,配置路徑和包名稱。

生成代碼文件

entity, mapper, service

繼承基類BaseMapper和IService封裝的CRUD功能函數

單元測試

MapperTest.java, ServiceTest.java

測試CRUD操做

功能調用

CheckController.java

增長REST接口/chk/db,測試數據庫讀寫功能

 

代碼

Github下載:https://github.com/jextop/StarterApi/

MyBatis-Plus官網:https://mybatis.plus/guide/

 

SpringBoot集成MyBatis和MyBatisPlus

1. 新建SpringBoot項目時,選中MyBatis,將自動添加MyBatis依賴。

 image.png

2. pom.xml中添加MyBatis Plus和Generator依賴。注意運行代碼生成工具時,須要一個頁面模板庫,示例使用freemarker。

<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.1.1</version>
</dependency>
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.3.0</version>
</dependency>
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-generator</artifactId>
    <version>3.3.0</version>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>

3. application.yml中配置數據源:

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/starter?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&serverTimezone=UTC
    username: root
    password: root

 

配置和運行代碼生成工具

1. MyBatis Plus提供了一個功能強大的代碼生成工具AutoGenerator,在代碼中修改文件路徑和包名稱:MyBatisPlusGenerator.java

2. 運行MyBatisPlusGenerator.main(),生成器能夠放在一個獨立的項目中。

3. 生成entity, mapper和service,繼承基類BaseMapper和IService封裝的CRUD功能函數。

 image.png

測試Mapper和Service的功能函數:

@SpringBootTest
public class LogServiceTest {
    @Autowired
    LogServiceImpl logService;

    @Test
    public void testSave() {
        boolean ret = logService.save(new Log() {{
            setSummary(String.format("service: %s", new Date()));
        }});

        LogUtil.info(ret);
        Assertions.assertTrue(ret);
    }

    @Test
    public void testList() {
        List<Log> ret = logService.list(new QueryWrapper<Log>()
                .orderByDesc("id")
                .last(true, "limit 2")
        );

        ret.forEach(LogUtil::info);
        Assertions.assertFalse(ret.isEmpty());
    }
}

 

功能調用

1. 增長RestController:CheckController.java

2. 增長REST接口/chk/db,調用mapper讀寫數據庫

@GetMapping(value = "/chk/db")
public Object db(@RequestAttribute(required = false) String ip) {
    // Write a log to db
    Log log = new Log() {{
        setSummary(String.format("db_test_%s_%s_數據庫", ip, new Date()));
    }};
    logMapper.insert(log);

    // Read log from db
    Log ret = logMapper.selectOne(new QueryWrapper<Log>()
            .orderByDesc("id")
            .eq("summary", log.getSummary())
    );
    Integer count = logMapper.selectCount(null);

    return new HashMap<String, Object>() {{
        put("chk", "db");
        put("msg", log.getSummary());
        put("status", log.getSummary().equals(ret.getSummary()));
        put("count", count);
    }};
}

 

REST接口調用數據庫讀寫功能示例

image.png

相關文章
相關標籤/搜索