Mybatis-Plus系列---【代码生成器】

1.引入pom依赖

<!--我的是springCloud项目,这个放在了fast-service的pom文件中-->
<dependency>
   <groupId>com.baomidou</groupId>
       <artifactId>mybatis-plus-boot-starter</artifactId>
       <version>3.4.3.4</version>
</dependency>
<!--上边的依赖包含这个生成器,若只是想用代码生成,引入这个包就行-->
<dependency>
       <groupId>com.baomidou</groupId>
       <artifactId>mybatis-plus-generator</artifactId>
       <version>3.4.1</version>
</dependency>
<!--我的是springCloud项目,这个放在了fast-service的pom文件中,MyBatis-Plus 支持 Velocity(默认)-->
<dependency>
       <groupId>org.apache.velocity</groupId>
       <artifactId>velocity-engine-core</artifactId>
       <version>2.3</version>
</dependency>

或者

 

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.3.2</version>
        </dependency>
        <dependency>
            <groupId>org.freemarker</groupId>
            <artifactId>freemarker</artifactId>
            <version>2.3.29</version>
        </dependency>    

 

2.代码配置类

/**
 * mybatis-plus-generator: 3.3.2
 * freemarker: 2.3.29或2.3.28
 */
public class FastGenerator {
    public static void main(String[] args) {
        // 代码生成器
        AutoGenerator mpg = new AutoGenerator();

        // 全局配置
        GlobalConfig gc = new GlobalConfig();
        String projectPath = System.getProperty("user.dir");
        //只用写到java目录
        gc.setOutputDir(projectPath + "/fast-boot/src/main/java");
        gc.setAuthor("hujunwei");
        //生成后是否打开资源管理器
        gc.setOpen(false);
        //重新生成文件时是否覆盖
        gc.setFileOverride(true);

        //类名生成规则,去掉Service接口的首字母
        gc.setServiceName("%sService");
        gc.setControllerName("%sController");
        gc.setServiceName("%sService");
        gc.setServiceImplName("%sServiceImpl");
        gc.setMapperName("%sMapper");
        gc.setXmlName("%sMapper");
        //主键策略
        gc.setIdType(IdType.ASSIGN_ID);
        //定义生成的实体类中日期类型
        gc.setDateType(DateType.TIME_PACK);
        //开启swagger2模式
        gc.setSwagger2(true);

        //包路径配置
        PackageConfig packageConfig = new PackageConfig();
        packageConfig.setParent("com.fast");
        packageConfig.setEntity("entity");
        packageConfig.setController("controller");
        packageConfig.setService("service");
        packageConfig.setServiceImpl("service.impl");
        packageConfig.setMapper("mapper");
        packageConfig.setXml("mapper.xml");
        mpg.setPackageInfo(packageConfig);

        mpg.setGlobalConfig(gc);

        // Mysql数据源配置
        DataSourceConfig dsc = new DataSourceConfig();
        dsc.setUrl("jdbc:mysql://192.168.0.102:3306/fast-boot?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8");
        dsc.setDriverName("com.mysql.cj.jdbc.Driver");
        dsc.setUsername("root");
        dsc.setPassword("hujunwei");
        dsc.setDbType(DbType.MYSQL);

        //Oracle数据源配置
//        DataSourceConfig dsc2 = new DataSourceConfig();
//        dsc.setUrl("jdbc:oracle:thin:@10.51.230.111:1521/orcl");
//        dsc.setDriverName("oracle.jdbc.driver.OracleDriver");
//        dsc2.setUsername("root");
//        dsc2.setPassword("hujunwei");
//        dsc.setDbType(DbType.ORACLE);

        mpg.setDataSource(dsc);

        // 策略配置
        StrategyConfig strategy = new StrategyConfig();
        //对哪些表生成代码,多个用逗号隔开,把这句话注掉则默认生成所有表
        strategy.setInclude("role");
        //数据库表名转实体:下划线转驼峰
        strategy.setNaming(NamingStrategy.underline_to_camel);
        //数据库表字段名转实体:下划线转驼峰
        strategy.setColumnNaming(NamingStrategy.underline_to_camel);
        //生成实体时,去掉表前缀
        strategy.setTablePrefix("fast_system_");
        //lombok 模型 @Accessors(chain = true) setter链式操作
        strategy.setEntityLombokModel(true);
        //restful api风格控制器
        strategy.setRestControllerStyle(true);
        //url中驼峰转下划线
        strategy.setControllerMappingHyphenStyle(true);
        //设置自动填充字段
        List<TableFill> tableFillList = new ArrayList<>();
        tableFillList.add(new TableFill("update_by", FieldFill.INSERT_UPDATE));
        tableFillList.add(new TableFill("update_time", FieldFill.INSERT_UPDATE));
        tableFillList.add(new TableFill("create_by", FieldFill.INSERT));
        tableFillList.add(new TableFill("create_time", FieldFill.INSERT));
        tableFillList.add(new TableFill("status", FieldFill.INSERT));
        tableFillList.add(new TableFill("del_flag", FieldFill.INSERT));
        strategy.setTableFillList(tableFillList);
        mpg.setStrategy(strategy);
        mpg.setTemplateEngine(new FreemarkerTemplateEngine());
        mpg.execute();
    }
}

3.备用模板

<dependency>
    <groupId>org.freemarker</groupId>
    <artifactId>freemarker</artifactId>
    <version>2.3.30</version>
</dependency>

<!-- https://mvnrepository.com/artifact/com.ibeetl/beetl -->
<dependency>
    <groupId>com.ibeetl</groupId>
    <artifactId>beetl</artifactId>
    <version>3.1.3.RELEASE</version>
</dependency>

 

posted on 2021-11-03 23:43  少年攻城狮  阅读(79)  评论(0编辑  收藏  举报

导航