MyBatis-Plus代码生成器(新)3.5.2的使用
1.官网
2.引入依赖
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.5.2</version>
</dependency>
3.创建代码生成器的运行类
public class NewCodeGenerator {
@Test
public void run() {
//配置部分
}
}
4.创建数据库连接
FastAutoGenerator.create("jdbc:mysql://localhost:3306/数据库名?serverTimezone=GMT+8", "root", "123456")
5.全局配置
.globalConfig(builder -> {
builder.author("perfect imitator") // 设置作者 baomidou 默认值:作者
.enableSwagger() // 开启 swagger 模式 默认值:false
.fileOverride() // 覆盖已生成文件 默认值:false
.disableOpenDir()//禁止打开输出目录 默认值:true
.commentDate("yyyy-MM-dd")// 注释日期
.dateType(DateType.ONLY_DATE)//定义生成的实体类中日期类型 DateType.ONLY_DATE 默认值: DateType.TIME_PACK
.outputDir(System.getProperty("user.dir") "/src/main/java"); // 指定输出目录 /opt/baomidou/ 默认值: windows:D:// linux or mac : /tmp
//System.getProperty("user.dir")为你当前模块的绝对路径
})
6.包配置
.packageConfig(builder -> {
builder.parent("com.atguigu") // 父包模块名 默认值:com.baomidou
.controller("controller")//Controller 包名 默认值:controller
.entity("entity")//Entity 包名 默认值:entity
.service("service")//Service 包名 默认值:service
.mapper("mapper")//Mapper 包名 默认值:mapper
.moduleName("educms") // 设置父包模块名 默认值:无
.pathInfo(Collections.singletonMap(OutputFile.xml,System.getProperty("user.dir") "/src/main/resources/mapper")); // 设置mapper.xml存放路径
//默认存放在mapper的xml下
})
这里将自动生成的xml
文件放在了main
下的resource
目录下,
如果没有进行设置,默认存放在mapper
的xml
目录下
但是存放在这个目录下的xml
文件时不能被解析的需要在yml
文件中配置
# mybatis-plus设置
mybatis-plus:
#配置mapper xml文件的路径
mapper-locations: classpath:com/atguigu/educms/mapper/xml/*.xml
7.策略配置
.strategyConfig(builder -> {
builder.addInclude("tb_banner") // 设置需要生成的表名 可边长参数“user”, “user1”
.addTablePrefix("tb_", "c_") // 设置过滤表前缀
.serviceBuilder()//service策略配置
.formatServiceFileName("%sService")
.formatServiceImplFileName("%sServiceImpl")
.entityBuilder()// 实体类策略配置
.idType(IdType.ASSIGN_ID)//主键策略 雪花算法自动生成的id
// 自动填充配置
.addTableFills(new Column("gmt_create", FieldFill.INSERT)) //根据数据库字段名适配
.addTableFills(new Property("gmtModified", FieldFill.INSERT_UPDATE))//根据生成实体类的属性名适配
.enableLombok() //开启lombok
.logicDeleteColumnName("deleted")// 说明逻辑删除是哪个字段
.enableTableFieldAnnotation()// 属性加上注解说明
.controllerBuilder() //controller 策略配置
.formatFileName("%sController")
.enableRestStyle() // 开启RestController注解
.mapperBuilder()// mapper策略配置
.formatMapperFileName("%sMapper")
.enableMapperAnnotation()//@mapper注解开启
.formatXmlFileName("%sMapper");
})
注意这里两个问题
- 1.设置主键自动生成的策略问题:
- 如果你的主键类型为
Long
类型就用IDType.ASSIGN_ID
- 如果你的主键类型为
String
类型就用IDType.ASSIGN_UUID
- 如果你的主键类型为
- 2.字段自动填充
Column
和Property
的区别
//如想要生成的表中有gmt_create字段且开启了下划线自动转驼峰 那么就有以下几种配置方法
.addTableFills(new Column("gmt_create", FieldFill.INSERT)) //根据数据库字段名适配
//因为开启了下划线自动转驼峰所以实体类中对应的属性名为gmtCreate
.addTableFills(new Property("gmtCreate", FieldFill.INSERT)) //根据属性名适配
也可以用list集合的方式
// 自定义需要填充的字段 数据库中的字段
List<IFill> columnList = new ArrayList<>();
columnList.add(new Column("gmt_modified", FieldFill.INSERT_UPDATE));
columnList.add(new Column("modifier_id", FieldFill.INSERT_UPDATE));
columnList.add(new Column("creator_id", FieldFill.INSERT));
columnList.add(new Column("gmt_create", FieldFill.INSERT));
columnList.add(new Column("available_flag", FieldFill.INSERT));
columnList.add(new Column("deleted_flag", FieldFill.INSERT));
columnList.add(new Column("sync_flag", FieldFill.INSERT));
.addTableFills(tableFillList)
8.指定模板引擎
.templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
.execute();
9.完整代码
package codeDemo;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import com.baomidou.mybatisplus.generator.fill.Column;
import com.baomidou.mybatisplus.generator.fill.Property;
import org.junit.Test;
import java.util.Collections;
public class NewCodeGenerator {
@Test
public void run() {
FastAutoGenerator.create("jdbc:mysql://localhost:3306/数据库名?serverTimezone=GMT+8", "root", "123456")
.globalConfig(builder -> {
builder.author("perfect imitator") // 设置作者 baomidou 默认值:作者
.enableSwagger() // 开启 swagger 模式 默认值:false
.fileOverride() // 覆盖已生成文件 默认值:false
.disableOpenDir()//禁止打开输出目录 默认值:true
.commentDate("yyyy-MM-dd")// 注释日期
.dateType(DateType.ONLY_DATE)//定义生成的实体类中日期类型 DateType.ONLY_DATE 默认值: DateType.TIME_PACK
.outputDir(System.getProperty("user.dir") "/src/main/java"); // 指定输出目录 /opt/baomidou/ 默认值: windows:D:// linux or mac : /tmp
//System.getProperty("user.dir")为你当前模块的绝对路径
})
.packageConfig(builder -> {
builder.parent("com.atguigu") // 父包模块名 默认值:com.baomidou
.controller("controller")//Controller 包名 默认值:controller
.entity("entity")//Entity 包名 默认值:entity
.service("service")//Service 包名 默认值:service
.mapper("mapper")//Mapper 包名 默认值:mapper
.moduleName("educms") // 设置父包模块名 默认值:无
.pathInfo(Collections.singletonMap(OutputFile.xml,System.getProperty("user.dir") "/src/main/resources/mapper")); // 设置mapperXml生成路径
//默认存放在mapper的xml下
})
.strategyConfig(builder -> {
builder.addInclude("tb_banner") // 设置需要生成的表名 可边长参数“user”, “user1”
.addTablePrefix("tb_", "c_") // 设置过滤表前缀
.serviceBuilder()//service策略配置
.formatServiceFileName("%sService")
.formatServiceImplFileName("%sServiceImpl")
.entityBuilder()// 实体类策略配置
.idType(IdType.ASSIGN_ID)//主键策略 雪花算法自动生成的id
.addTableFills(new Column("gmt_create", FieldFill.INSERT)) // 自动填充配置
.addTableFills(new Property("gmtModified", FieldFill.INSERT_UPDATE))
.enableLombok() //开启lombok
.logicDeleteColumnName("deleted")// 说明逻辑删除是哪个字段
.enableTableFieldAnnotation()// 属性加上注解说明
.controllerBuilder() //controller 策略配置
.formatFileName("%sController")
.enableRestStyle() // 开启RestController注解
.mapperBuilder()// mapper策略配置
.formatMapperFileName("%sMapper")
.enableMapperAnnotation()//@mapper注解开启
.formatXmlFileName("%sMapper");
})
.templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
.execute();
}
}
10.效果图
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhfhkcck
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13