栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

MyBatis-Plus 代码生成器 适用于3.5.1+

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

MyBatis-Plus 代码生成器 适用于3.5.1+

        
        
            com.baomidou
            mybatis-plus-generator
            3.5.1
        
        
            com.baomidou
            mybatis-plus-generator
            3.5.1
        
        
        
            com.baomidou
            mybatis-plus
            3.4.3.4
        
        
        
        
            io.springfox
            springfox-swagger2
            3.0.0
        
        
            io.springfox
            springfox-swagger-ui
            3.0.0
        
        



        
        
        
            org.freemarker
            freemarker
            2.3.28
        
package com.example.demo.config;

import java.util.Scanner;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.converts.SqlServerTypeConvert;
import com.baomidou.mybatisplus.generator.config.querys.SqlServerQuery;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.engine.AbstractTemplateEngine;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;



public class GeneratorConfig {
    // 数据库连接配置
    private static final String JDBC_URL = "jdbc:sqlserver://KULDCDWADT01.aia.biz:1433;DatabaseName=db_pbdirectmy";
    private static final String JDBC_USER_NAME = "insureadmin";
    private static final String JDBC_PASSOWRD = "aiadirectadmin";

    private static final String OUTPUTDIR = "/demo/src/main/java";

    //作者
    private static final String AUTHOR="Nami";

    //设置父包名
    private static final String PACKAGE_NAME = "com.example.demo";
    //设置父包模块名
    private static final String MODULE_NAME = null;
    //设置MVC下各个模块的包名
    private static final String ENTITY_NAME="entity";
    private static final String MAPPER_NAME="mapper";
    private static final String SERVICE_NAME="service";
    private static final String SERVICE_IMPL_NAME="service.impl";
    private static final String CONTROLLER_NAME="controller";
    //设置XML资源文件的目录
    private static final String MAPPER_XML_PATH="src\main\resources\mapper";


    //指定数据库表的前缀。指定后,在生成文件时,模板会自动截取掉前缀字符,如表名为sys_user,指定前缀为sys_,生成实体是自动识别生成为user
    //多个前缀可以用逗号隔开,例如 sys_,bs_,根据项目需要配置
    private static final String TABLE_PREFIX = "";

    //设置生成实体时的公共父类,例如 com.baomidou.global.baseEntity  ,根据项目需要配置
    private static final String superEntityPackageString = null;
    //设置生成Controller时的公共父类,例如 com.baomidou.global.baseController   ,根据项目需要配置
    private static final String superControllerPackageString = null;


    
    public static String scanner(String tip) throws Exception {
        Scanner scanner = new Scanner(System.in);
        StringBuilder help = new StringBuilder();
        help.append("请输入" + tip + ":");
        System.out.println(help);
        if (scanner.hasNext()) {
            String ipt = scanner.next();
            if (ipt!=null && ipt.length()>0) {
                return ipt;
            }
        }
        throw new Exception("请输入正确的" + tip + "!");
    }


    // 生成代码入口main方法
    public static void main(String[] args) throws Exception{
        // 1.数据库配置
        DataSourceConfig.Builder dataSourceConfigBuilder = new DataSourceConfig
                // 驱动连接的URL、数据库连接用户名、数据库连接密码
                .Builder(JDBC_URL, JDBC_USER_NAME, JDBC_PASSOWRD)
                // 关键字处理 ,这里选取了mysql5.7文档中的关键字和保留字(含移除) 说明:官方文档中没有关于sqlserver,oracle数据库的配置
                //.keyWordsHandler(new MySqlKeyWordsHandler())
                // 数据库信息查询类,默认由 dbType 类型决定选择对应数据库内置实现:mysql:MySqlQuery(),sqlserver :SqlServerQuery(),Oracle:OracleQuery()
                .dbQuery(new SqlServerQuery())
                // 类型转换,数据库=》JAVA类型  mysql: MySqlTypeConvert() sqlserver:SqlServerTypeConvert() oracle:OracleTypeConvert()
                .typeConvert(new SqlServerTypeConvert())
                // 数据库 schema name
                .schema("mybatis-plus");

        // 1.1.快速生成器
        FastAutoGenerator fastAutoGenerator = FastAutoGenerator.create(dataSourceConfigBuilder);

        // 2.全局配置
        // 覆盖已生成文件
        // 不打开生成文件目录
        // 指定输出目录,注意使用反斜杠
        // 设置注释的作者
        // 生成swagger注解
        // 设置注释的日期格式
        // 使用java8新的时间类型
        fastAutoGenerator.globalConfig(globalConfigBuilder -> globalConfigBuilder
                .fileOverride()
                .disableOpenDir()
                .outputDir(System.getProperty("user.dir") + OUTPUTDIR)
                .author(AUTHOR)
                .enableSwagger()
                .commentDate("yyyy-MM-dd")
                .dateType(DateType.TIME_PACK));

        // 3.包配置
        // 设置父包名
        // 设置父包模块名
        // 设置MVC下各个模块的包名
        // 设置XML资源文件的目录
        fastAutoGenerator.packageConfig(packageConfigBuilder -> packageConfigBuilder
                //父包模块名
                .moduleName(MODULE_NAME)
                //父包名
                .parent(PACKAGE_NAME)
                .entity(ENTITY_NAME)
                .mapper(MAPPER_NAME)
                .service(SERVICE_NAME)
                .serviceImpl(SERVICE_IMPL_NAME)
                .controller(CONTROLLER_NAME));

        // 4.模板配置
        // 使用Freemarker引擎模板,默认的是Velocity引擎模板
        AbstractTemplateEngine templateEngine = new FreemarkerTemplateEngine();
        fastAutoGenerator.templateEngine(templateEngine);

        // 6.策略配置
        // 设置需要生成的表名
        // 设置过滤表前缀
        fastAutoGenerator.strategyConfig(strategyConfigBuilder -> {
            try {
                strategyConfigBuilder
                        .enableCapitalMode()
                        .enableSkipView()
                        .disableSqlFilter()
                        //表名匹配,按指定的表名生成对应的文件
                        .addInclude(scanner("数据库表名,多个表名用英文逗号分割").split(","))
                        //指定数据库表的前缀。指定后,在生成文件时,模板会自动截取掉前缀字符,如表名为sys_user,指定前缀为sys_,生成实体是自动识别生成为user
                        .addTablePrefix(TABLE_PREFIX);
            } catch (Exception e) {
                e.printStackTrace();
            }
        });

        // 6.1.Entity策略配置
        // 生成实体时生成字段的注解,包括@TableId注解等
        // 数据库表和字段映射到实体的命名策略,为下划线转驼峰
        // 全局主键类型为None
        // 实体名称格式化为XXXEntity
        fastAutoGenerator.strategyConfig(strategyConfigBuilder -> strategyConfigBuilder
                .entityBuilder()
                //开启生成实体时生成字段注解
                .enableTableFieldAnnotation()
                //数据库表映射到实体的命名策略,NamingStrategy.underline_to_camel 指下划线转驼峰,NamingStrategy.no_change 无改变
                .naming(NamingStrategy.underline_to_camel)
                //开启实体Lombok注解模式
                .enableLombok()
                //开启 Boolean 类型字段移除 is 前缀
                .enableRemoveIsPrefix()
                .columnNaming(NamingStrategy.underline_to_camel)
                //设置Entity父类
                .superClass(superEntityPackageString)
                //.idType(IdType.NONE)
                .formatFileName("%sEntity"));


        // 6.2.Controller策略配置
        // 开启生成@RestController控制器
        fastAutoGenerator
                .strategyConfig(strategyConfigBuilder -> strategyConfigBuilder
                        .controllerBuilder()
                        //设置Controller父类
                        .superClass(superControllerPackageString)
                        //开启驼峰转连字符
                        .enableHyphenStyle()
                        //开启生成@RestController 控制器
                        .enableRestStyle());

        // 6.3.Service策略配置
        // 格式化service接口和实现类的文件名称,去掉默认的ServiceName前面的I
        fastAutoGenerator.strategyConfig(strategyConfigBuilder -> strategyConfigBuilder
                .serviceBuilder()
                //格式化 Service文件名称
                .formatServiceFileName("%sService")
                .formatServiceImplFileName("%sServiceImpl"));

        // 6.4.Mapper策略配置
        // 格式化 mapper文件名,格式化xml实现类文件名称
        fastAutoGenerator.strategyConfig(strategyConfigBuilder -> strategyConfigBuilder
                .mapperBuilder()
                //开启 @Mapper 注解
                .enableMapperAnnotation()
                .formatMapperFileName("%sMapper")
                .formatXmlFileName("%sMapper"));

        // 7.生成代码
        fastAutoGenerator.execute();
    }

}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/602425.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号