配置mybatis-plus-generator自动生成实体相关代码今天分享,mybatis-plus是常用的组件,使用方便,而且可以有自动生成代码的配置,使用方便:
1、pom相关jar引入
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.4.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.28</version>
</dependency>
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.28</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity</artifactId>
<version>1.7</version>
</dependency>
2、核心工具伪代码
package com.example.demo1.util;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.InjectionConfig;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.po.TableInfo;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author wanghuainan
* 1.注释调的代码自己根据需求参考使用
* 2.tableNames 添加要生成的表明
* 3.将repository包下的生成实现中的注解@Service 换成@Repository 方便层级清晰
*/
public class CommonMyBatisPlusGenerator {
public static void main(String[] args) {
AutoGenerator autoGenerator = new AutoGenerator();
//1、全局配置
GlobalConfig gc = new GlobalConfig();
gc.setFileOverride(true);
String projectPath = System.getProperty("user.dir");
String filePath = projectPath + "/src/main/java";
String filePathRe = projectPath + "/src/main/resources/";
gc.setOutputDir(filePath); //生成路径(一般都是生成在此项目的src/main/java下面)
gc.setAuthor("nandao@.com"); //设置作者
gc.setOpen(false);
// 自定义文件命名,注意 %s 会自动填充表实体属性!
gc.setFileOverride(true); //第二次生成会把第一次生成的覆盖掉
gc.setBaseResultMap(true); //生成resultMap
gc.setControllerName("%sController");
gc.setServiceName("I"+"%sRepository");
gc.setServiceImplName("%sRepImpl");
gc.setMapperName("I"+"%sMapper");
gc.setXmlName("%sMapper");
// gc.setSwagger2(true);
gc.setEntityName("%sEntity");
autoGenerator.setGlobalConfig(gc);
//2、数据源配置
DataSourceConfig dsc = new DataSourceConfig();
dsc.setUrl("jdbc:mysql://18.1.0.9:3360/user_test?useUnicode=true&serverTimezone=GMT&useSSL=false" +
"&characterEncoding=utf8");
dsc.setDriverName("com.mysql.cj.jdbc.Driver");
dsc.setUsername("root");
dsc.setPassword("root");
autoGenerator.setDataSource(dsc);
// 3、包配置(包名配置)
PackageConfig pc = new PackageConfig();
pc.setParent("com.example.demo1");
pc.setService("repository");
pc.setServiceImpl("repository.impl");
autoGenerator.setPackageInfo(pc);
InjectionConfig cfg = new InjectionConfig() {
@Override
public void initMap() {
Map<String, Object> map = new HashMap<String, Object>();
this.setMap(map);
}
};
// 调整 xml 生成目录演示
List<FileOutConfig> focList = new ArrayList<>();
focList.add(new FileOutConfig("/templates/mapper.xml.vm") {
@Override
public String outputFile(TableInfo tableInfo) {
return filePathRe + "\\mapper\\" + tableInfo.getEntityName() + "Mapper.xml";
}
});
cfg.setFileOutConfigList(focList);
autoGenerator.setCfg(cfg);
// 配置模板
TemplateConfig templateConfig = new TemplateConfig();
//控制 不生成 controller
templateConfig.setController("");
//templateConfig.setService("");
//templateConfig.setEntity("");
//templateConfig.setServiceImpl("");
//templateConfig.setMapper("");
//将mapper包 下面生成的xml文件移动到跟目录下的resources/mapper包下,若不用则不需要打开;如果注释调,则两个地方都有xml文件
templateConfig.setXml("");
autoGenerator.setTemplate(templateConfig);
// 4、策略配置
StrategyConfig strategy = new StrategyConfig();
strategy.setNaming(NamingStrategy.underline_to_camel);
strategy.setColumnNaming(NamingStrategy.underline_to_camel);
// 表名前缀
strategy.setTablePrefix("t_");
//使用lombok
// strategy.setEntityLombokModel(true);
// 逆向工程使用的表 如果要生成多个,这里可以传入String[]
String[] tableNames={"undo_log"};
strategy.setInclude(tableNames);
//数据库表映射到实体的命名策略
// strategy.setNaming(NamingStrategy.underline_to_camel);
//数据库表字段映射到实体的命名策略, 未指定按照 naming 执行
// strategy.setColumnNaming(NamingStrategy.underline_to_camel);
//自定义继承的Entity类全称,带包名
// strategy.setSuperEntityClass(null);
//【实体】是否为lombok模型(默认 false)
// strategy.setEntityLombokModel(true);
//生成 @RestController 控制器
// strategy.setRestControllerStyle(true);
//自定义继承的Controller类全称,带包名
// strategy.setSuperControllerClass(null);
//表名
/* if (tableNameArray != null && tableNameArray.length != 0) {
strategy.setInclude(tableNameArray);
}*/
//自定义基础的Entity类,公共字段
// strategy.setSuperEntityColumns(null);
//驼峰转连字符
// strategy.setControllerMappingHyphenStyle(true);
//表前缀
// strategy.setTablePrefix(pc.getModuleName() + "_");
autoGenerator.setStrategy(strategy);
//5、执行
autoGenerator.execute();
}
}
3、执行后生成的目录结构:
4、控制台日志:
到此,生成分享完毕,亲测好用!
注意:此类工具类文件尽量放在test目录里,避免不小心是生产环境出问题!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)