第一步:编写组件
@Component
@ConfigurationProperties(prefix = "generator")
@Data
public class MybatisPlusAutoGeneratorBean {
//数据库账号
private String username;
//数据库密码
private String password;
//数据库url地址
private String url;
//数据库驱动
private String driver;
//想要自动生成的数据库的表(可多张)
private String[] dbTableList;
//不生成表的前缀
private String[] prefix;
}
第二步:编写application.yml
# mybatisplus代码生成器配置
generator:
username: root
password: 123
driver: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/gnnykj_dev?useUnicode=true&characterEncoding=UTF-8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=GMT%2B8
dbTableList: #数据库的表,可多张(自己设置)
- ele_branch
prefix:
- ele
- sys
第三步:
@Component
public class MyAutoGenerator {
@Autowired
MybatisPlusAutoGeneratorBean mybatisPlusAutoGeneratorBean;
/**
* mybatisplus代码生成器方法
*/
public void autoGenerator() {
//代码生成器对象
com.baomidou.mybatisplus.generator.AutoGenerator mpg = new com.baomidou.mybatisplus.generator.AutoGenerator();
//1、全局配置
GlobalConfig gc = new GlobalConfig();
String projectPath = System.getProperty("user.dir");//用户目录
gc.setOutputDir(projectPath + "/src/main/java"); //输出目录
gc.setAuthor("Bright");//作者名称
gc.setOpen(false);//生成文件后是否打开资源管理器
gc.setFileOverride(false);//不要重新生成覆盖
gc.setServiceName("%sService");//去掉接口前面的字母I
//2、主键策略
gc.setIdType(IdType.AUTO);//设置主键自增策略
gc.setDateType(DateType.ONLY_DATE);//设置日期
//集成Swagger2
// gc.setSwagger2(true);//实体属性Swagger2注解
mpg.setGlobalConfig(gc);
// 3、数据源配置
DataSourceConfig dsc = new DataSourceConfig();
dsc.setUrl(mybatisPlusAutoGeneratorBean.getUrl());
dsc.setDriverName(mybatisPlusAutoGeneratorBean.getDriver());
dsc.setUsername(mybatisPlusAutoGeneratorBean.getUsername());
dsc.setPassword(mybatisPlusAutoGeneratorBean.getPassword());
dsc.setDbType(DbType.MYSQL);
mpg.setDataSource(dsc);
//4、自动生成包配置
PackageConfig packageConfig = new PackageConfig();
// packageConfig.setModuleName("blog");
packageConfig.setParent("com.gnnykj");
packageConfig.setController("controller");
packageConfig.setService("service");
packageConfig.setMapper("mapper");
packageConfig.setEntity("entity");
mpg.setPackageInfo(packageConfig);
//5、策略配置(主要修改配置)
StrategyConfig strategy = new StrategyConfig();
strategy.setInclude(mybatisPlusAutoGeneratorBean.getDbTableList());//需要生成的表,可以使用正则表达式
strategy.setNaming(NamingStrategy.underline_to_camel);//下划线转驼峰
strategy.setColumnNaming(NamingStrategy.underline_to_camel);//字段生成驼峰
strategy.setTablePrefix(mybatisPlusAutoGeneratorBean.getPrefix());//不生成表的前缀
strategy.setEntityLombokModel(true);//生成lombok
strategy.setLogicDeleteFieldName("deleted");//逻辑删除字段
strategy.setEntityBooleanColumnRemoveIsPrefix(true);//去除Boolean前面的Is前缀
//6、自动填充
TableFill create_time = new TableFill("create_time", FieldFill.INSERT);
TableFill update_time = new TableFill("update_time", FieldFill.INSERT_UPDATE);
ArrayList<TableFill> list = new ArrayList<>();
list.add(create_time);
list.add(update_time);
strategy.setTableFillList(list);
//7、乐观锁
strategy.setVersionFieldName("version");//乐观锁
strategy.setRestControllerStyle(true);//开启RestController风格
strategy.setControllerMappingHyphenStyle(true);//url驼峰命名转换
mpg.setStrategy(strategy);
//8、执行
mpg.execute();
}
}
第四步:在测试类里面启动生成
@Autowired
MyAutoGenerator myAutoGenerator;
@Test
public void test() {
myAutoGenerator.autoGenerator();
}