MyBatisPlus3.x中使用代码生成器(全注释)
作者:BADAO_LIUMANG_QIZHI 发布时间:2022-04-06 19:34:38
标签:MyBatisPlus,代码生成器
场景
MyBaitsPlus3.x与2.x是不一样的。这里使用3.0.1版本。
官方文档
https://mp.baomidou.com/guide/generator.html
这里在IDEA上的SpringBoot项目中进行代码生成测试。
实现
添加依赖
添加 代码生成器 依赖
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.2.0</version>
</dependency>
注意:MyBatis-Plus 从 3.0.3 之后移除了代码生成器与模板引擎的默认依赖,需要手动添加相关依赖
<!-- 模板引擎velocity start-->
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.0</version>
</dependency>
<!-- 模板引擎velocity end-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.0.1</version>
</dependency>
模板引擎
MyBatis-Plus 支持 Velocity(默认)、Freemarker、Beetl,用户可以选择自己熟悉的模板引擎。
注意!如果您选择了非默认引擎,需要在 AutoGenerator 中 设置模板引擎。
AutoGenerator generator = new AutoGenerator();
// set freemarker engine
generator.setTemplateEngine(new FreemarkerTemplateEngine());
// set beetl engine
generator.setTemplateEngine(new BeetlTemplateEngine());
// set custom engine (reference class is your custom engine class)
generator.setTemplateEngine(new CustomTemplateEngine());
编写代码
在test下新建单元测试类Generatortest.java
全局配置
//全局配置
GlobalConfig config = new GlobalConfig();
//设置是否支持AR模式
config.setActiveRecord(true)
//设置生成代码的作者
.setAuthor("badaoliumangqizhi")
//设置输出代码的位置
.setOutputDir("f:output")
//.setEnableCache(false)// XML 二级缓存
//.setBaseResultMap(true)// XML ResultMap
//.setBaseColumnList(true)// XML columList
//.setKotlin(true) 是否生成 kotlin 代码
//设置是否覆盖原来的代码
.setFileOverride(true);
数据源配置
//数据库连接url
String dbUrl = "jdbc:sqlserver://;DatabaseName=";
//数据源配置
DataSourceConfig dataSourceConfig = new DataSourceConfig();
//数据库类型 枚举
dataSourceConfig.setDbType(DbType.SQL_SERVER)
//设置url
.setUrl(dbUrl)
//设置用户名
.setUsername("")
//设置密码
.setPassword("")
//设置数据库驱动
.setDriverName("com.microsoft.sqlserver.jdbc.SQLServerDriver")
// 自定义数据库表字段类型转换【可选】
.setTypeConvert(new MySqlTypeConvert() {
@Override
public DbColumnType processTypeConvert(GlobalConfig globalConfig, String fieldType) {
System.out.println("转换类型:" + fieldType);
//tinyint转换成Boolean
if ( fieldType.toLowerCase().contains( "tinyint" ) ) {
return DbColumnType.BOOLEAN;
}
//将数据库中datetime转换成date
if ( fieldType.toLowerCase().contains( "datetime" ) ) {
return DbColumnType.DATE;
}
return (DbColumnType) super.processTypeConvert(globalConfig, fieldType);
}
});
策略配置
//策略配置
StrategyConfig strategyConfig = new StrategyConfig();
strategyConfig
//全局大写命名是否开启
.setCapitalMode(true)
//【实体】是否为lombok模型
.setEntityLombokModel(true)
//表名生成策略 下划线转驼峰
.setNaming(NamingStrategy.underline_to_camel)
//自动填充设置
//.setTableFillList(tableFillList)
//修改替换成你需要的表名,多个表名传数组
.setInclude("wms_receive_order");
集成注入配置
//注入全局设置
new AutoGenerator().setGlobalConfig(config)
//注入数据源配置
.setDataSource(dataSourceConfig)
//注入策略配置
.setStrategy(strategyConfig)
//设置包名信息
.setPackageInfo(
new PackageConfig()
//提取公共父级包名
.setParent("com.badao.bus.sys")
//设置controller信息
.setController("controller")
//设置实体类信息
.setEntity("entity")
)
//设置自定义模板
.setTemplate(
new TemplateConfig()
//.setXml(null)//指定自定义模板路径, 位置:/resources/templates/entity2.java.ftl(或者是.vm)
//注意不要带上.ftl(或者是.vm), 会根据使用的模板引擎自动识别
// 自定义模板配置,模板可以参考源码 /mybatis-plus/src/main/resources/template 使用 copy
// 至您项目 src/main/resources/template 目录下,模板名称也可自定义如下配置:
// .setController("...");
// .setEntity("...");
// .setMapper("...");
// .setXml("...");
// .setService("...");
.setServiceImpl("templates/serviceImpl.java")
)
//开始执行代码生成
.execute();
}
完整生成器代码
package com.ws.test.generator;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.converts.MySqlTypeConvert;
import com.baomidou.mybatisplus.generator.config.po.TableFill;
import com.baomidou.mybatisplus.generator.config.rules.DbColumnType;
import org.junit.Test;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import java.util.ArrayList;
import java.util.List;
/**
* Created by badado on 2019/4/25.
*/
public class Generatortest {
@Test
public void generateTest(){
//全局配置
GlobalConfig config = new GlobalConfig();
//设置是否支持AR模式
config.setActiveRecord(true)
//设置生成代码的作者
.setAuthor("badaoliumangqizhi")
//设置输出代码的位置
.setOutputDir("f:output")
//.setEnableCache(false)// XML 二级缓存
//.setBaseResultMap(true)// XML ResultMap
//.setBaseColumnList(true)// XML columList
//.setKotlin(true) 是否生成 kotlin 代码
//设置是否覆盖原来的代码
.setFileOverride(true);
//******************************数据源配置***************************************
//数据库连接url
String dbUrl = "jdbc:sqlserver://;DatabaseName=";
//数据源配置
DataSourceConfig dataSourceConfig = new DataSourceConfig();
//数据库类型 枚举
dataSourceConfig.setDbType(DbType.SQL_SERVER)
//设置url
.setUrl(dbUrl)
//设置用户名
.setUsername("")
//设置密码
.setPassword("")
//设置数据库驱动
.setDriverName("com.microsoft.sqlserver.jdbc.SQLServerDriver")
// 自定义数据库表字段类型转换【可选】
.setTypeConvert(new MySqlTypeConvert() {
@Override
public DbColumnType processTypeConvert(GlobalConfig globalConfig, String fieldType) {
System.out.println("转换类型:" + fieldType);
//tinyint转换成Boolean
if ( fieldType.toLowerCase().contains( "tinyint" ) ) {
return DbColumnType.BOOLEAN;
}
//将数据库中datetime转换成date
if ( fieldType.toLowerCase().contains( "datetime" ) ) {
return DbColumnType.DATE;
}
return (DbColumnType) super.processTypeConvert(globalConfig, fieldType);
}
});
//******************************策略配置******************************************************
// 自定义需要填充的字段 数据库中的字段
List<TableFill> tableFillList = new ArrayList<>();
tableFillList.add(new TableFill("gmt_modified", FieldFill.INSERT_UPDATE));
tableFillList.add(new TableFill("modifier_id", FieldFill.INSERT_UPDATE));
tableFillList.add(new TableFill("creator_id", FieldFill.INSERT));
tableFillList.add(new TableFill("gmt_creat", FieldFill.INSERT));
tableFillList.add(new TableFill("available_flag", FieldFill.INSERT));
tableFillList.add(new TableFill("deleted_flag", FieldFill.INSERT));
tableFillList.add(new TableFill("sync_flag", FieldFill.INSERT));
//策略配置
StrategyConfig strategyConfig = new StrategyConfig();
strategyConfig
//全局大写命名是否开启
.setCapitalMode(true)
//【实体】是否为lombok模型
.setEntityLombokModel(true)
//表名生成策略 下划线转驼峰
.setNaming(NamingStrategy.underline_to_camel)
//自动填充设置
.setTableFillList(tableFillList)
//修改替换成你需要的表名,多个表名传数组
.setInclude("wms_receive_order");
//集成注入设置
//注入全局设置
new AutoGenerator().setGlobalConfig(config)
//注入数据源配置
.setDataSource(dataSourceConfig)
//注入策略配置
.setStrategy(strategyConfig)
//设置包名信息
.setPackageInfo(
new PackageConfig()
//提取公共父级包名
.setParent("com.badao.bus.sys")
//设置controller信息
.setController("controller")
//设置实体类信息
.setEntity("entity")
)
//设置自定义模板
.setTemplate(
new TemplateConfig()
//.setXml(null)//指定自定义模板路径, 位置:/resources/templates/entity2.java.ftl(或者是.vm)
//注意不要带上.ftl(或者是.vm), 会根据使用的模板引擎自动识别
// 自定义模板配置,模板可以参考源码 /mybatis-plus/src/main/resources/template 使用 copy
// 至您项目 src/main/resources/template 目录下,模板名称也可自定义如下配置:
// .setController("...");
// .setEntity("...");
// .setMapper("...");
// .setXml("...");
// .setService("...");
.setServiceImpl("templates/serviceImpl.java")
)
//开始执行代码生成
.execute();
}
}
效果
运行测试
生成成功后会自动弹出生成代码的目录
来源:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/89518466


猜你喜欢
- webservice 可以用于分布式应用程序之间的交互,和不同程序之间的交互。概念性的东西就不说太多,下面开始创建一个简单的webservi
- 简介在上一篇文章中,我们列举了flutter中的所有layout类,并且详细介绍了两个非常常用的layout:Row和Column。掌握了上
- 一、运行class文件执行带main方法的class文件,命令行为:java <CLASS文件名>注意:CLASS文件名不要带文
- 今天在用OpenCV实验Image Pyramid的时候发现一个奇怪的问题,就是利用C++函数imread读取图片的时候返回的结果总是空,而
- 0. Grinder – Grinder是一个开源的JVM负载测试框架,它通过很多负载注射器来为分布式测试提
- 前言悬浮窗是一种比较常见的需求。例如把视频通话界面缩小成一个悬浮窗,然后用户可以在其他界面上处理事情。本文给出一个简单的应用内悬浮窗实现。可
- 本节向你展示如何在任务中发送数据给UI线程里的对象,这个特性允许你在后台线程工作,完了在UI线程展示结果。在UI线程定义一个HandlerH
- 实现Callable的对象中,用@Autowired注入别的对象失败场景是这样:我需要在一个实现类A中写一个拿到返回值的多线程,于是用的Ca
- 如下所示本来 bookService的引用一直是null。导致每次测试都报空指针异常。然后现在继承相应的 ApplicationTests类
- 自从SEOTcs系统11月份24日更新了一下SEO得分算法以来,一直困扰我的一个问题出现了,java的数据job任务,在执行过程中会经常报以
- 相信对于手机的时间日期设置大家一定都不陌生吧,今天举一个关于时间日期设置的示例,其中有些许不完善之处,例如如何使设置的时间日期和手机系统同步
- 在上篇文章跟大家介绍了Android之使用Android-query框架开发实战(一),本文继续跟大家介绍有关Android-query框架
- 1 修改项目打包类型在pom.xml里,项目打包类型将jar设置成war:<packaging>war</packagin
- springboot整合mybatis实现数据库更新批处理1.在mapper接口中编写方法/** * 修改book表中的销量和库存
- 要完成一个轮播图片,首先想到的应该是使用ViewPager来实现。ViewPager已经有了滑动的功能,我们只要让它自己滚动。再加上下方的小
- 目录准备工作1. 引入pom依赖2. 实现功能Excel文件下载3. 日志实体类4. 接口和具体实现Excel文件导入5. 文件读取配置6.
- 前言ps命令的作用是显示进程信息的。|符号,是个管道符号,表示左右两边两个命令同时执行。grep命令是查找(Global Regular E
- 1、AOP基本总结连接点(JoinPoint):连接点是程序运行的某个阶段点,如方法调用、异常抛出等切入点(Pointcut):切入点是Jo
- 本文实例讲述了Android基于SoftReference缓存图片的方法。分享给大家供大家参考,具体如下:Java中的SoftReferen
- ofType和javaType的区别JavaType和ofType都是用来指定对象类型的,但是JavaType是用来指定pojo中属性的类型