MybatisPlus+Springboot史上最完整代码生成器

代码生成器

更多编程的干货和获取源码关注我的公众号:不会写代码的阿P

AutoGenerator 是 MyBatis-Plus 的代码生成器,通过 AutoGenerator 可以快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各个模块的代码,极大的提升了开发效率。

简单来说将你重复的工作封装起来,用的直接直接调用即可生成。

1.添加依赖

MyBatis-Plus 从 3.0.3 之后移除了代码生成器与模板引擎的默认依赖,需要手动添加相关依赖:

添加 代码生成器 依赖

<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.3.2</version>
</dependency>
1
2
3
4
5
添加 模板引擎 依赖,MyBatis-Plus 支持 Velocity(默认)、Freemarker、Beetl,用户可以选择自己熟悉的模板引擎,如果都不满足您的要求,可以采用自定义模板引擎。

Velocity(默认):

<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.2</version>
</dependency>
1
2
3
4
5
Freemarker:

<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.30</version>
</dependency>
1
2
3
4
5
2.开始

2.1全局配置

//1.全局配置
GlobalConfig globalConfig = new GlobalConfig();
globalConfig.setActiveRecord(true)//是否支持AR模式
.setAuthor("yangjun")//作者
.setOutputDir(System.getProperty("user.dir") + "/src/main/java")//生成路径
.setFileOverride(true)//文件覆盖
.setIdType(IdType.ASSIGN_ID)//主键策略
.setServiceName("%sService")//设置生成的servic接口的名字首字母是否为I 例如:IUserService
.setBaseResultMap(true)//生成mapper文件的SQL映射
.setEnableCache(false)// XML 二级缓存
.setBaseColumnList(true)//生成列集合
.setSwagger2(true);//需要引入swagger依赖
1
2
3
4
5
6
7
8
9
10
11
12
2.2数据源配置

//2.数据源配置
DataSourceConfig dataSourceConfig = new DataSourceConfig();
dataSourceConfig.setDbType(DbType.MYSQL)//数据库选择
.setDriverName("com.mysql.cj.jdbc.Driver")
.setUrl("jdbc:mysql://localhost:3306/cmsserverTimezone=GMT%2B8&amp&useSSL=false")
.setUsername("账户")
.setPassword("密码");
1
2
3
4
5
6
7
2.3策略配置

//3.策略配置
StrategyConfig strategyConfig = new StrategyConfig();
//自动填充策略
TableFill createTime = new TableFill("create_time", FieldFill.INSERT);
TableFill updateTime = new TableFill("update_time", FieldFill.INSERT_UPDATE);
ArrayList<TableFill> tableFills = new ArrayList<>();
tableFills.add(createTime);
tableFills.add(updateTime);

strategyConfig.setCapitalMode(true)//全局大写命名
.setNaming(NamingStrategy.underline_to_camel)//数据库表映射到实体的命名策略
.setColumnNaming(NamingStrategy.underline_to_camel)
.setEntityLombokModel(true)//引入lombok依赖省去getset方法
.setTableFillList(tableFills)//自动填充策略
.setVersionFieldName("version")//自动生成逻辑删除,数据库中必须有deleted字段
.setInclude("table/需要生成的表
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2.4包名策略配置

//4、包名策略配置
PackageConfig packageConfig = new PackageConfig();
packageConfig.setParent("com.cms")//父目录
.setMapper("mapper")//mapper文件夹
.setService("service")//service目录
.setController("controller")//controlle目录
.setEntity("entity")//实体类目录
.setXml("mapper/log");//mapper.xml目录
//上面的都可以根据实际情况改动
1
2
3
4
5
6
7
8
9
2.4加载配置

//5、整合配置
AutoGenerator autoGenerator = new AutoGenerator();
autoGenerator.setGlobalConfig(globalConfig)
.setDataSource(dataSourceConfig)
.setStrategy(strategyConfig)
.setPackageInfo(packageConfig);
//执行
autoGenerator.execute();
1
2
3
4
5
6
7
8
完整代码:

/**
* @Author: yangjun
* @Date: 2020/6/8 20:16
* @Version 1.0
*/
public class MPGenerator {

/**
* @param table 表名
*/
public static void AutoGenerator(String table){
//1.全局配置
GlobalConfig globalConfig = new GlobalConfig();
globalConfig.setActiveRecord(true)//是否支持AR模式
.setAuthor("yangjun")//作者
.setOutputDir(System.getProperty("user.dir") + "/src/main/java")//生成路径
.setFileOverride(true)//文件覆盖
.setIdType(IdType.ASSIGN_ID)//主键策略
.setServiceName("%sService")//设置生成的servic接口的名字首字母是否为I 例如:IUserService
.setBaseResultMap(true)//生成mapper文件的SQL映射
.setEnableCache(false)// XML 二级缓存
.setBaseColumnList(true)//生成列集合
.setSwagger2(true);
//2.数据源配置
DataSourceConfig dataSourceConfig = new DataSourceConfig();
dataSourceConfig.setDbType(DbType.MYSQL)
.setDriverName("com.mysql.cj.jdbc.Driver")
.setUrl("jdbc:mysql://localhost:3306/cms?serverTimezone=GMT%2B8&amp&useSSL=false")
.setUsername("root")
.setPassword("root");
//3.策略配置
StrategyConfig strategyConfig = new StrategyConfig();
//自动填充策略
TableFill createTime = new TableFill("create_time", FieldFill.INSERT);
TableFill updateTime = new TableFill("update_time", FieldFill.INSERT_UPDATE);
ArrayList<TableFill> tableFills = new ArrayList<>();
tableFills.add(createTime);
tableFills.add(updateTime);
strategyConfig.setCapitalMode(true)//全局大写命名
// .isCapitalModeNaming( NamingStrategy.underline_to_camel())
//指定表明 字段名是否为下划线
.setNaming(NamingStrategy.underline_to_camel)//数据库表映射到实体的命名策略
.setColumnNaming(NamingStrategy.underline_to_camel)
.setEntityLombokModel(true)
.setTableFillList(tableFills)//自动填充策略
.setVersionFieldName("version")
.setInclude("log");//s生成的表
//4、包名策略配置
PackageConfig packageConfig = new PackageConfig();
packageConfig.setParent("com.cms")
.setMapper("mapper")
.setService("service")
.setController("controller")
.setEntity("entity")
.setXml("mapper/log");
//5、整合配置
AutoGenerator autoGenerator = new AutoGenerator();
autoGenerator.setGlobalConfig(globalConfig)
.setDataSource(dataSourceConfig)
.setStrategy(strategyConfig)
.setPackageInfo(packageConfig);
//执行
autoGenerator.execute();
}

public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("請輸入要生成的表名");
AutoGenerator(scanner.next());
}
}

————————————————
原文链接:https://blog.csdn.net/weixin_39570423/article/details/106878091

https://www.dianyuan.com/people/838804
https://www.dianyuan.com/people/838805
https://www.dianyuan.com/people/838806
https://www.dianyuan.com/people/838807
https://www.dianyuan.com/people/838808
https://www.dianyuan.com/people/838809
https://www.dianyuan.com/people/838810
https://www.dianyuan.com/people/838811
https://www.dianyuan.com/people/838812
https://www.dianyuan.com/people/838813
https://www.dianyuan.com/people/838814
https://www.dianyuan.com/people/838815
https://www.dianyuan.com/people/838816
https://www.dianyuan.com/people/838817
https://www.dianyuan.com/people/838818
https://www.dianyuan.com/people/838819
https://www.dianyuan.com/people/838820
https://www.dianyuan.com/people/838821
https://www.dianyuan.com/people/838822
https://www.dianyuan.com/people/838823
https://www.dianyuan.com/people/838824
https://www.dianyuan.com/people/838825
https://www.dianyuan.com/people/838826
https://www.dianyuan.com/people/838827
https://www.dianyuan.com/people/838828
https://www.dianyuan.com/people/838829
https://www.dianyuan.com/people/838830
https://www.dianyuan.com/people/838831
https://www.dianyuan.com/people/838832
https://www.dianyuan.com/people/838833
https://www.dianyuan.com/people/838834
https://www.dianyuan.com/people/838835
https://www.dianyuan.com/people/838836
https://www.dianyuan.com/people/838837
https://www.dianyuan.com/people/838838
https://www.dianyuan.com/people/838839
https://www.dianyuan.com/people/838840
https://www.dianyuan.com/people/838841
https://www.dianyuan.com/people/838842
https://www.dianyuan.com/people/838843
https://www.dianyuan.com/people/838844
https://www.dianyuan.com/people/838845
https://www.dianyuan.com/people/838846
https://www.dianyuan.com/people/838847
https://www.dianyuan.com/people/838848
https://www.dianyuan.com/people/838849
https://www.dianyuan.com/people/838850
https://www.dianyuan.com/people/838851
https://www.dianyuan.com/people/838852
https://www.dianyuan.com/people/838853
https://www.dianyuan.com/people/838854
https://www.dianyuan.com/people/838855
https://www.dianyuan.com/people/838856
https://www.dianyuan.com/people/838857
https://www.dianyuan.com/people/838858
https://www.dianyuan.com/people/838859
https://www.dianyuan.com/people/838860
https://www.dianyuan.com/people/838861
https://www.dianyuan.com/people/838862
https://www.dianyuan.com/people/838863
https://www.dianyuan.com/people/838864
https://www.dianyuan.com/people/838865
https://www.dianyuan.com/people/838866
https://www.dianyuan.com/people/838867
https://www.dianyuan.com/people/838868

猜你喜欢

转载自www.cnblogs.com/dasdfdfecvcx/p/13170646.html