我是靠谱客的博主 神勇草丛,最近开发中收集的这篇文章主要介绍根据数据库表名生成对应的bean及其相关接口、实现类、Mapper xml一、背景二、实现,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
一、背景
项目开发中,经常会根据数据库表,创建对应的bean及其相关接口、实现类、Mapper xml。都是一个固定的格式,所以不如将其写成一个固定程序,每次生成执行一次即可。
二、实现
示例如下:
public class Generator {
/**
* <p>
* 读取控制台内容
* </p>
*/
public static String scanner(String tip) {
Scanner scanner = new Scanner(System.in);
StringBuilder help = new StringBuilder();
help.append("请输入" + tip + ":");
System.out.println(help.toString());
if (scanner.hasNext()) {
String ipt = scanner.next();
if (!StringUtils.isEmpty(ipt)) {
return ipt;
}
}
throw new MybatisPlusException("请输入正确的" + tip + "!");
}
public static void main(String[] args) {
// 代码生成器
AutoGenerator mpg = new AutoGenerator();
String projectPath = System.getProperty("user.dir");
// 全局配置
GlobalConfig gc = new GlobalConfig();
// 设置数据库设置
mpg.setDataSource(
new DataSourceConfig()
.setUrl("jdbc:mysql://192.168.22.111:3306/test?useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=Asia/Shanghai")
.setDriverName("com.mysql.cj.jdbc.Driver")
.setUsername("root")
.setPassword("root123456")
.setDbType(DbType.MYSQL)
);
// 包配置
PackageConfig pc = new PackageConfig().setParent("com.gdfxit.foundwater");
pc.setModuleName("persistence");
mpg.setPackageInfo(pc);
mpg.setStrategy(new StrategyConfig()
.setNaming(NamingStrategy.underline_to_camel)
.setInclude(scanner("表名,多个英文逗号分割").split(","))
.setEntityColumnConstant(true)
.setRestControllerStyle(true));
// 自定义配置
InjectionConfig cfg = new InjectionConfig() {
@Override
public void initMap() {
// 自定义模板使用${cfg.map的key}获取该map的值
Map<String, Object> map = new HashMap<>();
map.put("author", "linmiao");
this.setMap(map);
}
};
// 自定义输出配置
List<FileOutConfig> focList = new ArrayList<>();
// 自定义配置会被优先输出
// Mapper.xml
focList.add(new FileOutConfig("/templates/mapper.xml.vm") {
@Override
public String outputFile(TableInfo tableInfo) {
// 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!!
return projectPath+"/src/main/resources/mapper/"
+ "/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;
}
});
// Controller.java
focList.add(new FileOutConfig("/templates/controller.java.vm") {
@Override
public String outputFile(TableInfo tableInfo) {
// 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!!
return projectPath+"/src/main/java/" + pc.getParent().replace(".", "/").replace("persistence", "controller")
+ "/" + tableInfo.getEntityName() + "ApiController" + StringPool.DOT_JAVA;
}
});
// Entity.Java
focList.add(new FileOutConfig("/templates/entity.java.vm") {
@Override
public String outputFile(TableInfo tableInfo) {
// 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!!
return projectPath+"/src/main/java/" + pc.getParent().replace(".", "/")
+ "/entity/" + tableInfo.getEntityName() + StringPool.DOT_JAVA;
}
});
// Mapper.java
focList.add(new FileOutConfig("/templates/mapper.java.vm") {
@Override
public String outputFile(TableInfo tableInfo) {
// 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!!
return projectPath+"/src/main/java/" + pc.getParent().replace(".", "/")
+ "/mapper/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_JAVA;
}
});
// Service.java
focList.add(new FileOutConfig("/templates/service.java.vm") {
@Override
public String outputFile(TableInfo tableInfo) {
// 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!!
return projectPath+"/src/main/java/" + pc.getParent().replace(".", "/")
+ "/service/" + tableInfo.getEntityName() + "Service" + StringPool.DOT_JAVA;
}
});
// ServiceImpl.java
focList.add(new FileOutConfig("/templates/serviceImpl.java.vm") {
@Override
public String outputFile(TableInfo tableInfo) {
// 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!!
return projectPath+"/src/main/java/" + pc.getParent().replace(".", "/")
+ "/service/impl/" + tableInfo.getEntityName() + "ServiceImpl" + StringPool.DOT_JAVA;
}
});
// 设置自定义模板
cfg.setFileOutConfigList(focList);
mpg.setCfg(cfg);
// 设置模板
TemplateConfig templateConfig = new TemplateConfig();
templateConfig.setEntity(null)
.setXml(null)
.setController(null)
.setService(null)
.setMapper(null)
.setServiceImpl(null);
mpg.setTemplate(templateConfig);
// 执行生成器
mpg.execute();
}
}
最后
以上就是神勇草丛为你收集整理的根据数据库表名生成对应的bean及其相关接口、实现类、Mapper xml一、背景二、实现的全部内容,希望文章能够帮你解决根据数据库表名生成对应的bean及其相关接口、实现类、Mapper xml一、背景二、实现所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复