package com.yongdeng;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.po.TableFill;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import java.util.ArrayList;
//代码自动生成器
public class Code {
public static void main(String[] args) {
//需要构建一个代码自动生成器对象
AutoGenerator mpg = new AutoGenerator();
//配置策略
//1.全局配置
GlobalConfig gc = new GlobalConfig();
//获取系统当前目录
String property = System.getProperty("user.dir");
//代码生成到这个目录下
gc.setOutputDir(property+"/src/main/java");
gc.setAuthor("王");//代码上注释的作者
gc.setOpen(false);//是否打开资源管理器(代码生成后打开代码所在文件夹)
gc.setFileOverride(true);//是否覆盖原来生成的
gc.setServiceName("%sService");//去Service的I前缀
gc.setIdType(IdType.ID_WORKER);//生成策略
gc.setDateType(DateType.ONLY_DATE);//时间类型
gc.setSwagger2(true);//自动配置swagger文档
mpg.setGlobalConfig(gc);
//2.设置数据源(配用户名链接密码连接数据库)
DataSourceConfig dsc = new DataSourceConfig();
dsc.setUrl("jdbc:mysql://localhost:3306/decorate?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC");
dsc.setDriverName("com.mysql.cj.jdbc.Driver");
dsc.setUsername("root");
dsc.setPassword("123456");
dsc.setDbType(DbType.MYSQL);//数据库的类型
mpg.setDataSource(dsc);
//3.包的配置
PackageConfig pc = new PackageConfig();
pc.setModuleName("blog");//模块名字
pc.setParent("com.yongdeng");//生成模块在这个路径下
pc.setEntity("entity");
pc.setMapper("mapper");
pc.setService("service");
pc.setController("controller");
mpg.setPackageInfo(pc);
//策略配置
StrategyConfig strategy = new StrategyConfig();
strategy.setInclude("user");//要生成的表名,想要生成哪个表的代码就填表名,可传多个参数,","隔开
strategy.setNaming(NamingStrategy.underline_to_camel);//下划线转驼峰命名
strategy.setColumnNaming(NamingStrategy.underline_to_camel);//列的名字下划线转驼峰
strategy.setEntityLombokModel(true); //是否使用lombok开启注解链式变成是否支持
strategy.setLogicDeleteFieldName("deleted");//逻辑删除(deleted表明)
//自动填充配置
TableFill tableFill = new TableFill("user", FieldFill.INSERT);//创建时自动填充策略user数据库表
TableFill tableFill1 = new TableFill("user", FieldFill.INSERT_UPDATE);//修改时
ArrayList list = new ArrayList<>();
list.add(tableFill);
list.add(tableFill1);
strategy.setTableFillList(list);
//乐观锁
strategy.setVersionFieldName("version");//乐观锁
strategy.setRestControllerStyle(true);//开启驼峰命名格式
strategy.setControllerMappingHyphenStyle(true);//localhost:8080/hello_id_2
mpg.execute();//执行
}
}