spring boot项目使用mybatis-plus代码生成实例

前言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等 。
【spring boot项目使用mybatis-plus代码生成实例】.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();}}

经验总结扩展阅读