spring boot項目使用mybatis-plus代碼生成實例

前言mybatis-plus官方地址【spring boot項目使用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.xmltype-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();}}

推薦閱讀