Mybaits-plus之代码生成器

时间:2025-04-03 09:00:30
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 org.junit.jupiter.api.Test; import java.util.ArrayList; public class CodeGenerator { @Test public void genCode() { // 前缀(数据库中的表名) String prefix = "xxx_"; String moduleName = "xxx"; // 1、创建代码生成器 AutoGenerator mpg = new AutoGenerator(); // 2、全局配置 GlobalConfig gc = new GlobalConfig(); String projectPath = System.getProperty(""); gc.setOutputDir(projectPath + "/src/main/java"); gc.setAuthor("cxl"); gc.setOpen(false); // 生成后是否打开资源管理器 gc.setFileOverride(false); // 重新成时文件是否覆盖 gc.setServiceName("%sService"); // 去掉Service接口的首字母I gc.setIdType(IdType.ASSIGN_ID); // 主键策略 gc.setDateType(DateType.ONLY_DATE);// 定义生成的实体类中日期类型 gc.setSwagger2(true);// 开启 Swagger2 模式 mpg.setGlobalConfig(gc); // 3、数据源配置 DataSourceConfig dsc = new DataSourceConfig(); dsc.setUrl("jdbc:mysql://127.0.0.1:3306/" + prefix + moduleName + "?serverTimezone=UTC"); dsc.setDriverName(""); dsc.setUsername("root"); dsc.setPassword("root"); dsc.setDbType(DbType.MYSQL); mpg.setDataSource(dsc); // 4、包配置 PackageConfig pc = new PackageConfig(); pc.setParent(""); pc.setModuleName(moduleName); //模块名 pc.setController("controller"); pc.setEntity("entity"); pc.setService("service"); pc.setMapper("mapper"); mpg.setPackageInfo(pc); // 5、策略配置 StrategyConfig strategy = new StrategyConfig(); // 生成哪些表 strategy.setInclude("xxx","xxxx"); // 数据库表映射到实体的命名策略 strategy.setNaming(NamingStrategy.underline_to_camel); // 设置表前缀不生成 strategy.setTablePrefix(moduleName + "_"); // 数据库表字段映射到实体的命名策略 strategy.setColumnNaming(NamingStrategy.underline_to_camel); // lombok 模型 @Accessors(chain = true) setter链式操作 strategy.setEntityLombokModel(true); // 逻辑删除字段名 strategy.setLogicDeleteFieldName("is_deleted"); // 去掉布尔值的is_前缀 strategy.setEntityBooleanColumnRemoveIsPrefix(true); // 自动填充 TableFill gmtCreate = new TableFill("gmt_create", FieldFill.INSERT); TableFill gmtModified = new TableFill("gmt_modified", FieldFill.INSERT_UPDATE); ArrayList<TableFill> tableFills = new ArrayList<>(); tableFills.add(gmtCreate); tableFills.add(gmtModified); strategy.setTableFillList(tableFills); // restful api风格控制器 strategy.setRestControllerStyle(true); // url 中驼峰转连字符 strategy.setControllerMappingHyphenStyle(true); mpg.setStrategy(strategy); // 6、执行 mpg.execute(); } }