使⽤mybatisplus代码⽣成器⽣成代码(⾃定义不同类型⽂件的⽣成路径)
mybatis plus在mybatis基础上进⾏了封装和加强,旨在提供⽅便的⾯向持久层的操作,类似Spring JPA。
配置⽅法和详细介绍见。
mybatis plus提供代码⽣成器可以⽅便开发者⽣成xml、dao、service、controller、entity层代码,简化常规crud的代码和实体类映射编码。下⾯提供配置模板⽰例,供参考,其中包含⾃定义指定不同类型⽂件在项⽬中的路径。
配置mybatis plus代码⽣成器依赖
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.2.0</version>
</dependency>
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId><!--使⽤velocity模板引擎(默认)-->
<version>2.0</version>
</dependency>
mysql数据源配置⽰例
public class MybatisAutoGenerator {
public static void main(String[] args){
// 代码⽣成器
AutoGenerator mpg =new AutoGenerator();
/
/ 全局配置
GlobalConfig gc =new GlobalConfig();
String projectPath = Property("user.dir");
gc.setOutputDir(projectPath +"/src/main/java");
gc.setAuthor("南熏门前⼀只喵");
gc.setOpen(false);
gc.setFileOverride(true);//每次运⾏进⾏覆盖操作
gc.setMapperName("%sDao");//java mapper类命名后缀
gc.setDateType(DateType.ONLY_DATE);//mysql timestamp由java.util.Date类型映射
// gc.setSwagger2(true); 实体属性 Swagger2 注解
mpg.setGlobalConfig(gc);
/
/ 数据源配置
DataSourceConfig dsc =new DataSourceConfig();
dsc.setUrl("jdbc:mysql://ip:port/databaseName?useUnicode=true&useSSL=false&characterEncoding=utf8");
// dsc.setSchemaName("public");
dsc.setDriverName("sql.jdbc.Driver");
dsc.setUsername("⽤户名");
dsc.setPassword("密码");
dsc.setSchemaName("数据库名");
dsc.setDbType(DbType.MYSQL);
mpg.setDataSource(dsc);
// 包配置
PackageConfig pc =new PackageConfig();
//设置⽂件的包名
pc.setModuleName("manage");
pc.setParent("igateway");
pc.setEntity("sql.plus");
pc.setMapper("sql.plus");
//设置不同类⽂件⽣成的路径
HashMap<String, String> pathMap =new HashMap<>();
pathMap.put(ConstVal.ENTITY,projectPath+"/src/main/java/com/czx/igateway/manage/entity/mysql/plus");
pathMap.put(ConstVal.MAPPER,projectPath+"/src/main/java/com/czx/igateway/manage/dao/mysql/plus");
pc.setPathInfo(pathMap);
/
/ 策略配置
StrategyConfig strategy =new StrategyConfig();
strategy.setNaming(NamingStrategy.underline_to_camel);
strategy.setColumnNaming(NamingStrategy.underline_to_camel);
strategy.setInclude("deterioration_default_config,deterioration_config,deterioration_config_group,deterioration_group_config".split(","));//需要⽣成的表 strategy.setTablePrefix("t_");//⽣成的⽂件去除表前缀
// 配置模板
TemplateConfig templateConfig =new TemplateConfig();
//不⽣成如下类型模板
templateConfig.setController(null);
templateConfig.setService(null);
templateConfig.setServiceImpl(null);
templateConfig.setMapper(null);
mpg.setTemplate(templateConfig);
如果模板引擎是 freemarker
//String templatePath = "/l.ftl";
//如果模板引擎是 velocity
String mapperXmlPath ="/l.vm";
String mapperJavaPath ="/templates/mapper.java.vm";
String entityPath="/templates/entity.java.vm";
// ⾃定义配置
InjectionConfig cfg =new InjectionConfig(){
@Override
public void initMap(){
// to do nothing
}
};
// ⾃定义输出配置
List<FileOutConfig> focList =new ArrayList<>();
// ⾃定义配置优先于默认配置⽣效
focList.add(new FileOutConfig(entityPath){
@Override
public String outputFile(TableInfo tableInfo){
// ⾃定义Entity⽂件名跟⽣成路径
return projectPath +"/src/main/java/com/cmhi/igateway/manage/entity/mysql/plus/"+ EntityName()+ StringPool.DOT_JAVA;
}
jpa mybatis});
focList.add(new FileOutConfig(mapperXmlPath){
@Override
public String outputFile(TableInfo tableInfo){
// ⾃定义xml ⽂件名和⽣成路径
return projectPath +"/src/main/resources/mapping/plus/"+ EntityName()+ StringPool.DOT_XML;
}
});
focList.add(new FileOutConfig(mapperJavaPath){
@Override
public String outputFile(TableInfo tableInfo){
// ⾃定义Dao类⽂件名和⽣成路径
return projectPath+"/src/main/java/com/cmhi/igateway/manage/dao/mysql/plus/"+EntityName()+"Dao"+StringPool.DOT_JAVA;
}
});
cfg.setFileOutConfigList(focList);
mpg.setCfg(cfg);
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论