mybatis-plus⾃动⽣成实体类(包含swagger注解)mybatis-plus⾃动⽣成实体类(包含swagger注解)
mybatis-plus逆向⼯程, ⾃动⽣成实体类,带swaager注解
1. ⾸先导⼊相应的jar包
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.1.14.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.1.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.1.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.1.5.RELEASE</version>
</dependency>
<!--就不需要⼿动引⼊mybatis -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus</artifactId>
<version>3.3.2</version>
</dependency>
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity</artifactId>
<version>1.7</version>
</dependency>
<!--mybatisplus 代码⽣成器-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.3.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.45</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.31</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.51</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.20</version>
</dependency>
<!--slf4j-->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.6.1</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.10.5</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.10.5</version>
</dependency>
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-annotations</artifactId>
<version>1.5.24</version>
</dependency>
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-models</artifactId>
<version>1.5.24</version>
</dependency>
</dependencies>
2.然后编写⾃动⽣成代码类
package com;
import batisplus.annotation.DbType;
import ator.AutoGenerator;
import ator.InjectionConfig;
import fig.*;
import verts.MySqlTypeConvert; import fig.po.TableInfo;
import fig.rules.DbColumnType; import fig.rules.IColumnType;
import fig.rules.NamingStrategy;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class GeneratorCommon {
/**
* <p> Mr.Chen
* MySQL ⽣成演⽰
* </p>
*/
//获取项⽬绝对路径
private static String canonicalPath ="";
public static void main(String[] args){
//获取项⽬路径
try{
canonicalPath =new File("").getCanonicalPath();
}catch(Exception e){
e.printStackTrace();
}
System.out.println("canonicalPath="+ canonicalPath);
// String filePath = canonicalPath+"\\mybatisPlusGer\\src\\main\\";
String filePath = canonicalPath +"\\src\\main\\";
AutoGenerator mpg =new AutoGenerator();
// 选择 freemarker 引擎,默认 Veloctiy
//mpg.tTemplateEngine(new FreemarkerTemplateEngine());
// 全局配置
GlobalConfig gc =new GlobalConfig();
gc.tAuthor("Mr.Chen");
gc.tSwagger2(true);//实体属性 Swagger2 注解
gc.tOutputDir(filePath +"java");//代码⽣成路径
gc.tFileOverride(true);// 是否覆盖同名⽂件,默认是fal
gc.tActiveRecord(true);// 不需要ActiveRecord特性的请改为fal
gc.tEnableCache(fal);// XML ⼆级缓存
gc.tBaResultMap(true);// XML ResultMap
gc.tBaColumnList(fal);// XML columList
gc.tOpen(fal);//⽣成后打开⽂件夹
/* ⾃定义⽂件命名,注意 %s 会⾃动填充表实体属性! */
gc.tControllerName("%sController");
gc.tServiceName("%sService");
gc.tServiceImplName("%sServiceImpl");
gc.tMapperName("%sMapper");
gc.tXmlName("%sMapper");
mpg.tGlobalConfig(gc);
// 数据源配置
DataSourceConfig dsc =new DataSourceConfig();
dsc.tDbType(DbType.MYSQL);
dsc.tTypeConvert(new MySqlTypeConvert(){
// ⾃定义数据库表字段类型转换【可选】
@Override
public IColumnType processTypeConvert(GlobalConfig gc, String fieldType){
System.out.println("转换类型:"+ fieldType);
// 注意!!processTypeConvert 存在默认类型转换,如果不是你要的效果请⾃定义返回、⾮如下直接返回。
//默认会把⽇期类型转为LocalDateTime ,在查询的时候会报错,这⾥改为Date
String t = LowerCa();
ains("date")|| t.contains("time")|| t.contains("year")){
return DbColumnType.DATE;
}el{
return super.processTypeConvert(gc, fieldType);
}
}
});
//数据库连接配置
dsc.tDriverName("sql.jdbc.Driver");
// dsc.tDriverName("sql.cj.jdbc.Driver"); //mysql8.0使⽤
dsc.tUrname("root");
dsc.tPassword("root");
dsc.tUrl("jdbc:mysql://192.168.1.199/cloud_shop?uUnicode=true&characterEncoding=utf8");
mpg.tDataSource(dsc);
// 策略配置
StrategyConfig strategy =new StrategyConfig();
//strategy.tCapitalMode(true);// 全局⼤写命名 ORACLE 注意
//strategy.tTablePrefix("tb_");// 此处可以修改为您的表前缀
strategy.tNaming(NamingStrategy.underline_to_camel);// 表名⽣成策略
strategy.tNaming(NamingStrategy.underline_to_camel);// 表名⽣成策略
strategy.tColumnNaming(NamingStrategy.underline_to_camel);//采⽤驼峰映射
strategy.tEntityLombokModel(true);//【实体】是否为lombok模型(默认 fal)
strategy.tInclude(new String[]{"article","article_data"});// 需要⽣成的表.如果需要⽣成所有的, 注释掉此⾏就可以// strategy.tExclude(new String[]{"test"}); // 排除⽣成的表
三国演义的主要内容
// ⾃定义实体⽗类
// strategy.tSuperEntityClass("com.baomidou.demo.TestEntity");
// ⾃定义实体,公共字段
// strategy.tSuperEntityColumns(new String[] { "test_id", "age" });wps图片排版
// ⾃定义 mapper ⽗类
// strategy.tSuperMapperClass("com.baomidou.demo.TestMapper");
// ⾃定义 rvice ⽗类
// strategy.tSuperServiceClass("com.baomidou.demo.TestService");
// ⾃定义 rvice 实现类⽗类
// strategy.tSuperServiceImplClass("com.baomidou.demo.TestServiceImpl");
// ⾃定义 controller ⽗类
/
/ strategy.tSuperControllerClass("com.baomidou.demo.TestController");
// 【实体】是否⽣成字段常量(默认 fal)
春节特点
// public static final String ID = "test_id";
// strategy.tEntityColumnConstant(true);
// 【实体】是否为构建者模型(默认 fal)
// public Ur tName(String name) {this.name = name; return this;}
// strategy.tEntityBuilderModel(true);
海贼王女帝壁纸mpg.tStrategy(strategy);
// 包配置
PackageConfig pc =new PackageConfig();
pc.tParent("com.faw.jetta");// ⾃定义包路径
pc.tController("controller");// 这⾥是控制器包名,默认 web
pc.tMapper("mapper");// 设置Mapper包名,默认mapper
pc.tService("rvice");// 设置Service包名,默认rvice
pc.tEntity("ity");// 设置Entity包名,默认entity,继承的⽗类已序列化
pc.tXml("l");// 设置Mapper XML包名,默认l
mpg.tPackageInfo(pc);
// 注⼊⾃定义配置,可以在 VM 中使⽤ cfg.abc 设置的值
InjectionConfig cfg =new InjectionConfig(){
@Override
public void initMap(){
Map<String, Object> map =new HashMap<String, Object>();
map.put("abc",Config().getGlobalConfig().getAuthor()+"-mp");
this.tMap(map);
}
};
// 调整 xml ⽣成⽬录演⽰
List<FileOutConfig> focList =new ArrayList<>();
focList.add(new FileOutConfig("/l.vm"){
@Override
public String outputFile(TableInfo tableInfo){
return filePath +"\\resources\\mapper\\xml\\"+ EntityName()+"l";
}
征女友});
cfg.tFileOutConfigList(focList);
mpg.tCfg(cfg);
// 注⼊⾃定义配置,可以在 VM 中使⽤ cfg.abc 【可⽆】
// InjectionConfig cfg = new InjectionConfig() {
// @Override
// public void initMap() {
// Map<String, Object> map = new HashMap<String, Object>();
// map.put("abc", Config().getGlobalConfig().getAuthor() + "-mp");
// this.tMap(map);
// }
/
/ };
// };
中国认证认可
//
// // ⾃定义 xxList.jsp ⽣成
// List<FileOutConfig> focList = new ArrayList<>();
// focList.add(new FileOutConfig("/template/list.jsp.vm") {
// @Override
// public String outputFile(TableInfo tableInfo) {
// // ⾃定义输⼊⽂件名称
// return "D://my_" + EntityName() + ".jsp";
// }
/
/ });
// cfg.tFileOutConfigList(focList);
// mpg.tCfg(cfg);
//
// // 调整 xml ⽣成⽬录演⽰
悬岩
// focList.add(new FileOutConfig("/l.vm") {
// @Override
// public String outputFile(TableInfo tableInfo) {
// return "/develop/code/xml/" + EntityName() + ".xml";
// }
// });
/
/ cfg.tFileOutConfigList(focList);
// mpg.tCfg(cfg);
//
// // 关闭默认 xml ⽣成,调整⽣成⾄根⽬录
// TemplateConfig tc = new TemplateConfig();
// tc.tXml(null);
// mpg.tTemplate(tc);
// ⾃定义模板配置,可以 copy 源码 mybatis-plus/src/main/resources/templates 下⾯内容修改,
// 放置⾃⼰项⽬的 src/main/resources/templates ⽬录下, 默认名称⼀下可以不配置,也可以⾃定义模板名称// TemplateConfig tc = new TemplateConfig();
// tc.tController("...");
// tc.tEntity("...");
// tc.tMapper("...");
// tc.tXml("...");
// tc.tService("...");
// tc.tServiceImpl("...");
// 如上任何⼀个模块如果设置空 OR Null 将不⽣成该模块。
// mpg.tTemplate(tc);
// 执⾏⽣成
// 打印注⼊设置【可⽆】
// Cfg().getMap().get("abc"));
}
野望原文及翻译
}
⽣成的代码展⽰