首頁 > 軟體

SpringBoot專案使用mybatis-plus程式碼生成的範例詳解

2022-10-16 14:04:07

前言

mybatis-plus官方地址

https://baomidou.com

mybatis-plus是mybatis的增強,不對mybatis做任何改變,涵蓋了程式碼生成,自定義ID生成器,快速實現CRUD,自動分頁,邏輯刪除等功能,更多功能請查閱官方檔案

安裝依賴

mybatis-plus-generator

<!-- mybatis plus 程式碼生成器 -->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.4.3.4</version>
</dependency>
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-generator</artifactId>
    <version>3.5.1</version>
</dependency>

application.yml新增設定

針對spring boot或者mavan專案,我們需要在專案組態檔進行mybatis-plus新增設定項

mybatis-plus:
  mapper-locations: classpath*:mapper/**/*Mapper.xml
  type-aliases-package: com.lewyon.mybatislewyon.entity

程式碼生成範例

程式碼生成依賴

在程式碼生成之前,我們還需要新增mysql等相關包,進行匯入,當前範例使用freemarker模板,因此需要新增相關依賴

<!-- mysql -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.26</version>
</dependency>
<!-- freemarker -->
<dependency>
    <groupId>org.freemarker</groupId>
    <artifactId>freemarker</artifactId>
    <version>2.3.31</version>
</dependency>

資料來源設定

範例化DataSourceConfig方法對資料來源進行設定,傳入資料庫地址和賬號密碼

private static final DataSourceConfig.Builder DATA_SOURCE_CONFIG = new DataSourceConfig
    .Builder("jdbc:mysql://localhost:3306/user?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC", "root", "lewyon123")
    .dbQuery(new MySqlQuery()) //資料庫查詢
    .schema("mybatis-plus") //資料庫schema(部分資料庫適用)
    .typeConvert(new MySqlTypeConvert()) //資料庫型別轉換器
    .keyWordsHandler(new MySqlKeyWordsHandler()); //資料庫關鍵字處理器

globalConfig處理通用設定

.globalConfig(builder -> {
    builder.author("lewyon") // 設定作者
            .enableSwagger() // 開啟 swagger 模式
            .fileOverride() // 覆蓋已生成檔案
            .disableOpenDir() //禁止開啟輸出目錄
            .outputDir(projectPath + "/src/main/java"); // 指定輸出目錄
})

packageConfig包名設定

packageConfig設定項包括父包名,entity,service, serviceImpl, mapper層,

xml設定,控制器controller等。

.packageConfig(builder -> {
    builder.parent("com.lewyon.mybatislewyon") // 設定父包名
            .moduleName("user") // 設定父包模組名
            .entity("entity")
            .service("service")
            .serviceImpl("service.impl")
            .mapper("mapper")
            .xml("mapper.xml")
            .controller("controller");
})

strategyConfig設定

  • strategyConfig設定設定包括表名稱以及表名處理
  • 格式化Service以及ServiceImpl,新增%s字首表示去除 Service 字首的I
.strategyConfig(builder -> {
    builder.addInclude("user") // 設定需要生成的表名
            .addTablePrefix("t_", "c_").controllerBuilder()
            .enableHyphenStyle()
            .enableRestStyle()
            .serviceBuilder()
            .formatServiceFileName("%sService")
            .formatServiceImplFileName("%sServiceImp")
            .build();
})

小結

以上就是關於mybatis-plus生成程式碼包的基礎範例,完整程式碼如下:

package com.lewyon.mybatislewyon;

import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.converts.MySqlTypeConvert;
import com.baomidou.mybatisplus.generator.config.querys.MySqlQuery;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import com.baomidou.mybatisplus.generator.engine.VelocityTemplateEngine;
import com.baomidou.mybatisplus.generator.keywords.MySqlKeyWordsHandler;

public class GeneratorCode {
    /**
     * 資料來源設定
     */
    private static final DataSourceConfig.Builder DATA_SOURCE_CONFIG = new DataSourceConfig
            .Builder("jdbc:mysql://localhost:3306/user?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC", "root", "lewyon123")
            .dbQuery(new MySqlQuery()) //資料庫查詢
            .schema("mybatis-plus") //資料庫schema(部分資料庫適用)
            .typeConvert(new MySqlTypeConvert()) //資料庫型別轉換器
            .keyWordsHandler(new MySqlKeyWordsHandler()); //資料庫關鍵字處理器

    public static void main(String[] args) {
        String projectPath = System.getProperty("user.dir");
        FastAutoGenerator.create(DATA_SOURCE_CONFIG)
                .globalConfig(builder -> {
                    builder.author("lewyon") // 設定作者
                            .enableSwagger() // 開啟 swagger 模式
                            .fileOverride() // 覆蓋已生成檔案
                            .disableOpenDir() //禁止開啟輸出目錄
                            .outputDir(projectPath + "/src/main/java"); // 指定輸出目錄
                })
                .packageConfig(builder -> {
                    builder.parent("com.lewyon.mybatislewyon") // 設定父包名
                            .moduleName("user") // 設定父包模組名
                            .entity("entity")
                            .service("service")
                            .serviceImpl("service.impl")
                            .mapper("mapper")
                            .xml("mapper.xml")
                            .controller("controller");
                })
                .strategyConfig(builder -> {
                    builder.addInclude("user") // 設定需要生成的表名
                            .addTablePrefix("t_", "c_").controllerBuilder()
                            .enableHyphenStyle()
                            .enableRestStyle()
                            .serviceBuilder()
                            .formatServiceFileName("%sService")
                            .formatServiceImplFileName("%sServiceImp")
                            .build();
                })
                .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,預設的是Velocity引擎模板
                .execute();

    }
}

mybatis-plus生成程式碼當前範例只針對單表查詢,表欄位為:id,name,這裡表結構不做單獨列舉,需要的同學請自行建表處理。

總結

專案原始碼地址:

https://gitee.com/lewyon/spring-note

以上就是SpringBoot專案使用mybatis-plus程式碼生成的範例詳解的詳細內容,更多關於SpringBoot使用mybatis-plus程式碼生成的資料請關注it145.com其它相關文章!


IT145.com E-mail:sddin#qq.com