Mybatis-Plus
-
代码生成器(新):https://baomidou.com/pages/779a6e
适用版本:mybatis-plus-generator 3.5.1 及其以上版本,对历史版本不兼容!3.5.1 以下版本请参考代码生成器(旧)
引入pom依赖
<!-- SpringMVC -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.3.2.RELEASE</version>
</dependency>
<!-- mysql 驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.28</version>
<scope>runtime</scope>
</dependency>
<!-- mybatisPlus 依赖 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.1</version>
</dependency>
<!-- mybatisplus 生成器 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.5.2</version>
</dependency>
<!-- Freemarker 引擎模板 -->
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.31</version>
</dependency>
<!-- lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.18</version>
</dependency>
<!-- swagger2 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>3.0.0</version>
</dependency>
代码生成器源码
public class Generator {
public static void main(String[] args) {
FastAutoGenerator.create("jdbc:mysql://127.0.0.1:3306/mybatis_plus_db?useUnicode=true&serverTimezone=GMT&characterEncoding=utf-8", "root", "123456")
.globalConfig(builder -> {
builder.author("LangLingFu") // 设置作者
.enableSwagger() // 开启 swagger 模式
.disableOpenDir()// 禁止打开输出目录,默认值:true
.commentDate("yyyy-MM-dd HH:mm")// 注释日期,默认值: yyyy-MM-dd
.outputDir("D://"); // 指定输出目录
})
.packageConfig(builder -> {
builder.parent("com.mp") // 设置父包名,默认值:com.baomidou
.moduleName("samples") // 设置父包模块名,默认值:无
.entity("entity")// Entity 包名,默认值:entity
.service("service")// Service 包名,默认值:service
.serviceImpl("service.impl")// Service Impl 包名,默认值:service.impl
.mapper("mapper")// Mapper 包名,默认值:mapper
.xml("mapper.xml")// Mapper XML 包名,默认值:mapper.xml
.pathInfo(Collections.singletonMap(OutputFile.xml, "D://")) // 路径配置信息
.controller("controller");// Controller 包名,默认值:controller
})
.strategyConfig(builder -> {
builder.addInclude("t_user", "tb_user2") // 设置需要生成的表名
.addTablePrefix("t_", "tb_")// 设置过滤表前缀
.entityBuilder().disableSerialVersionUID()// 禁用生成 serialVersionUID,默认值:true
.enableChainModel()// 开启链式模型,默认值:false
.enableLombok()// 开启 lombok 模型,默认值:false
.enableTableFieldAnnotation()// 开启生成实体时生成字段注解,默认值:false
.enableActiveRecord()// 开启 ActiveRecord 模型,默认值:false
// .versionColumnName("version")// 乐观锁字段名(数据库)
// .logicDeleteColumnName("deleted")// 逻辑删除字段名(数据库)
// .addTableFills(new Column("create_time", FieldFill.INSERT))
// .addTableFills(new Column("update_time", FieldFill.INSERT_UPDATE))
.mapperBuilder().superClass(BaseMapper.class)// 设置父类
.enableMapperAnnotation()// 开启 @Mapper 注解,默认值:false
.enableBaseResultMap()// 启用 BaseResultMap 生成,默认值:false
.enableBaseColumnList()// 启用 BaseColumnList,默认值:false
.controllerBuilder().enableHyphenStyle()// 开启驼峰转连字符,默认值:false
.enableRestStyle();// 开启生成@RestController 控制器,默认值:false
})
.templateEngine(new FreemarkerTemplateEngine()) // 使用 Freemarker 引擎模板
.execute();
}
}
操作时遇到的小问题
1、运行方法时控制台输出日志乱码
解决方法:在 Run -> Edit Configurations 那里 Add VM options 加上如下配置
-Dfile.encoding=UTF-8
2、生成的代码不整齐,逼死强迫症
原因:未设置模板引擎时,默认使用 Velocity 引擎模板(虽然不影响使用,但极度影响观感,呐,就是上面这样)
解决方法:使用 Freemarker 引擎模板