Mybatis-Plus-Generator
2023-12-26 19:14:03
mybatis-plus-generator 自动生成代码
<!-- mybatis plus自动代码生成 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.5.0</version>
<scope>provided</scope>
</dependency>
<!-- mybatis-plus默认模板 -->
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.2</version>
<scope>provided</scope>
</dependency>
<!-- 使用Freemarker引擎模板,默认的是Velocity引擎模板 -->
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.31</version>
</dependency>
模板一
import com.baomidou.mybatisplus.generator.*;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.rules.*;
import java.util.Objects;
/**
* 如何使用:将工具类的静态常量改成符合你自己的需要即可。
*/
public class MybatisPlusGeneratorApp {
/* mysql 连接 */
private static final String ip = "127.0.0.1";
private static final String port = "3306";
private static final String database = "scott";
private static final String url = String.format("jdbc:mysql://%s:%s/%s?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai", ip, port, database);
private static final String driverName = "com.mysql.cj.jdbc.Driver";
private static final String username = "root";
private static final String password = "123456";
/* 各种、各级别包名 */
private static final String moduleName = null; // 模块名。如果是不是 maven 多模块项目,这里写 null ,注意,不是 "null" 。
private static final String parentPackage = "xxx.yyy.zzz"; // 父包名。如果为空,将下面子包名必须写全部,否则就只需写子包名
private static final String entityIn = "bean.po";
private static final String mapperIn = "dao";
private static final String xmlIn = "mappers";
private static final String serviceIn = "service";
/* 要操作的表名 */
private static final String tableNames = "department,employee"; // 多个表名用逗号隔开。不要有空格。
public static void main(String[] args) {
try {
generator();
System.out.println("mybatis 代码生成成功");
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* Mybatis一键生成entity,mapper,mapper.xml,service,serviceImpl,controller
*/
public static void generator() {
AutoGenerator mpg = new AutoGenerator();
mpg.setGlobalConfig(globalConfig());// 全局配置
mpg.setDataSource(dataSourceConfig());// 数据源配置
mpg.setPackageInfo(packageConfig());// 包配置
mpg.setStrategy(strategyConfig());// 策略配置
mpg.setTemplate(templateConfig());// 模板配置
mpg.execute();
}
/**
* 全局配置
*
* @return GlobalConfig
*/
private static GlobalConfig globalConfig() {
String projectPath = System.getProperty("user.dir");
GlobalConfig globalConfig = new GlobalConfig();
// 文件输出目录
if (Objects.equals(moduleName, null) || Objects.equals(moduleName.trim(), ""))
globalConfig.setOutputDir(projectPath + "/src/main/java");
else
globalConfig.setOutputDir(projectPath + "/" + moduleName + "/src/main/java");
// 添加作者信息
globalConfig.setAuthor(System.getProperty("user.name"));
//设置时间类型为Date
globalConfig.setDateType(DateType.TIME_PACK);
// 生成文件后不默认打开
globalConfig.setOpen(false);
// 设置生成的各种“东西”的名字
globalConfig.setEntityName("%sPo");
globalConfig.setMapperName("%sDao");
// 自定义service生成的名字,用于删除自动生成的I前缀
//globalConfig.setServiceName("%sService");
return globalConfig;
}
/**
* 数据源设置
*
* @return DataSourceConfig
*/
private static DataSourceConfig dataSourceConfig() {
DataSourceConfig dataSourceConfig = new DataSourceConfig();
dataSourceConfig.setUrl(url);
dataSourceConfig.setDriverName(driverName);
dataSourceConfig.setUsername(username);
dataSourceConfig.setPassword(password);
return dataSourceConfig;
}
/**
* 包配置
*
* @return PackageConfig
*/
private static PackageConfig packageConfig() {
// 包配置
PackageConfig packageConfig = new PackageConfig();
// 包名
packageConfig.setParent(parentPackage);
// 各个包目录起名
packageConfig.setEntity(entityIn);
packageConfig.setMapper(mapperIn);
packageConfig.setXml(xmlIn);
// packageConfig.setService(serviceIn);
return packageConfig;
}
/**
* 策略配置
*
* @return StrategyConfig
*/
private static StrategyConfig strategyConfig() {
// 策略配置
StrategyConfig strategyConfig = new StrategyConfig();
// 表名自动下划线转驼峰
strategyConfig.setNaming(NamingStrategy.underline_to_camel);
// 字段名自动下划线转驼峰命
strategyConfig.setColumnNaming(NamingStrategy.underline_to_camel);
// 设置实体类的lombok(此处看个人使用,如果不使用lombok,那么在生成之后再去添加构造方法等等)
strategyConfig.setEntityLombokModel(true);
strategyConfig.setRestControllerStyle(true);
// scanner("表名,多个英文逗号分割").split(",")
strategyConfig.setInclude((tableNames).split(","));
// 驼峰生成方法
strategyConfig.setControllerMappingHyphenStyle(true);
return strategyConfig;
}
/**
* 模板配置项
*
* @return TemplateConfig
*/
private static TemplateConfig templateConfig() {
TemplateConfig templateConfig = new TemplateConfig();
templateConfig.setXml(ConstVal.TEMPLATE_XML);
// 不生成 mapper.xml 文件
// templateConfig.setXml(null);
// 不生成 service
templateConfig.setService(null);
// 不生成 service 实现类
templateConfig.setServiceImpl(null);
// 不生成 controller 类
templateConfig.setController(null);
return templateConfig;
}
}
模板二(推荐、简单够用)
public void generator() {
String rootDir = "E:/generator";
String outputDir = rootDir + "/java"; //生成的文件放置目录
String packageName = "xxx.yyy.zzz"; //设置父包名
String mapperXmlDir = rootDir + "/resources/" + packageName.replaceAll("\\.", "/") + "/mapper"; //xml文件放置目录
String url ="" //同上设置即可;
FastAutoGenerator.create(url, "root", "123456")//name password
.globalConfig(builder -> {
builder.author("myname") // 设置作者
// .enableSwagger() // 开启 swagger 模式
.fileOverride() // 覆盖已生成文件
.outputDir(outputDir); // 指定输出目录
}).packageConfig(builder -> {
builder.parent(packageName) // 设置父包名
// 设置mapperXml生成路径
.pathInfo(Collections.singletonMap(OutputFile.mapperXml, mapperXmlDir));
}).strategyConfig(builder -> {
builder.addInclude("id_departmant","test_employee") //给该表生成
.addTablePrefix("id_", "test_") //设置过滤表前缀
.entityBuilder().enableLombok()//entity使用lombok
.entityBuilder().columnNaming(NamingStrategy.no_change) //是否开启驼峰
.controllerBuilder() //创建Controller
.enableRestStyle() //使用restController
.mapperBuilder().enableMapperAnnotation();//开启mapper注解
// 使用Freemarker引擎模板,默认的是Velocity引擎模板
}).templateEngine(new FreemarkerTemplateEngine())
.execute();
}
文章来源:https://blog.csdn.net/m0_73393501/article/details/135227184
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!