【精】简单 就一个类 ---使用MyBatis Generator自动生成代码(com.baomidou.mybatisplus)


 

 我们使用MyBatis Generator自动生成代码,网上搜了一堆 都不靠谱,一点不简洁。

mybatis-plus代码生成器及配置 - BlogMemory - 博客园

所以我这边写了个简单的,就一个基础类搞定,其中有很多注释,你可以自定义选择需要一些特殊的配置(本来写好的项目 ,而且里面有很多集成的mybatis使用方式来着,结果一下让我给删了,而且找不回来了也。。。我就懒得重新写个项目了 ,心累啊!)

baseMapper 是mybatisplus 自带的写法

 基础工具类

package com.baba.springcloud.pament.util;

import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.converts.MySqlTypeConvert;
import com.baomidou.mybatisplus.generator.config.querys.MySqlQuery;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.keywords.MySqlKeyWordsHandler;

// 代码自动生成器
public class Generator1 {
    // 数据库连接字段配置
    private static final String JDBC_URL = "jdbc:mysql://xxx/xxx?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true";
    private static final String JDBC_USER_NAME = "xx";
    private static final String JDBC_PASSWORD = "xxx";

    // 包名和模块名
    private static final String PACKAGE_NAME = "com.baba.springcloud.pament.util";
    private static final String MODULE_NAME = "demo";

    //覆盖文件设置
  /*  StrategyConfig.Builder()
    entityBuilder().fileOverride() //下面 例子有
    mapperBuilder().fileOverride()
    serviceBuilder().fileOverride()
    controllerBuilder().fileOverride()*/
    // 表名,多个表使用英文逗号分割
    private static final String[] TBL_NAMES = {"EMAIL_SENDING_RECORD"};

    // 表名的前缀,从表生成代码时会去掉前缀
    private static final String TABLE_PREFIX = "";


    public static void main(String[] args) {

        //获取当前工程路径(这里无需修改)
        //String projectPath =  System.getProperty("user.dir");
        String projectPath = "D:\\work\\mcroService\\uti-service";


        /**
         * 1.数据库配置(设置数据源)
         配置数据库连接以及需要使用的字段
         */
        DataSourceConfig.Builder dataSourceConfigBuilder = new DataSourceConfig.Builder(JDBC_URL, JDBC_USER_NAME,
                JDBC_PASSWORD)
                .dbQuery(new MySqlQuery())
                .typeConvert(new MySqlTypeConvert())
                .keyWordsHandler(new MySqlKeyWordsHandler());


        FastAutoGenerator fastAutoGenerator = FastAutoGenerator.create(dataSourceConfigBuilder);


        /**
         * 2.全局配置
         */
        fastAutoGenerator.globalConfig(
                globalConfigBuilder -> globalConfigBuilder
                        .fileOverride()     // 覆盖已生成文件
                        .disableOpenDir()   // 不打开生成文件目录
                        .outputDir(projectPath + "/src/main/java") // 指定输出目录,注意斜杠的表示
                        .author("chengxin") // 设置注释的作者
                        .commentDate("yyyy-MM-dd HH:mm:ss") // 设置注释的日期格式
                        .dateType(DateType.TIME_PACK)   // 使用java8新的时间类型
                //.enableSwagger()    // 开启swagger文档
        );

        /**
         日期类型 DateType
         DateType.ONLY_DATE 使用 java.util.date包下的 Date
         DateType.SQL_PACK 使用 java.sql包下的 Date
         DateType.TIME_PACK   因为会使用 java.time.LocalDateTime jdk1.8以上才支持  (推荐使用)
         */


        /**
         * 3.包配置
         */
        fastAutoGenerator.packageConfig(
                packageConfigBuilder -> packageConfigBuilder
                        .parent(PACKAGE_NAME)   // 设置父包名
                        // .moduleName(MODULE_NAME) // 设置父包模块名
                        .entity("pojo") // 设置MVC下各个模块的包名
                        .mapper("dao")
                        .service("service")
                        .serviceImpl("service.impl")
                        .controller("controller")
                        .xml("dao.xml") // 设置XML资源文件的目录

        );

        /**
         * 4.模板配置
         */
        /*
        fastAutoGenerator.templateConfig(
                templateConfigBuilder -> templateConfigBuilder
                        .disable(TemplateType.ENTITY)   // 禁用模板
                        .entity("/templates/entity.java")   // 设置实体模板路径(JAVA)
                        .service("/templates/service.java") // 设置service模板路径
                        .serviceImpl("/templates/serviceImpl.java") // 设置serviceImpl模板路径
                        .mapper("/templates/mapper.java")   // 设置mapper模板路径
                        .xml("/templates/mapper.xml")   // 设置mapperXml模板路径
                        .controller("/templates/controller.java")   // 设置controller模板路径
        );
        */

        /**
         * 5.注入配置 TODO
         */


        /**
         * 6.策略配置
         */
        fastAutoGenerator.strategyConfig(
                strategyConfigBuilder -> strategyConfigBuilder
                        .enableCapitalMode()    // 开启大写命名
                        .enableSkipView()   // 开启跳过视图
                        .disableSqlFilter() // 禁用sql过滤
                        .addInclude(TBL_NAMES)  // 设置需要生成的表名
                        .addTablePrefix(TABLE_PREFIX)   // 设置过滤表前缀
        );


        /**
         * 6.1 Entity策略配置
         */
        fastAutoGenerator.strategyConfig(
                strategyConfigBuilder -> strategyConfigBuilder.entityBuilder()
                        .fileOverride()//覆盖 entity
                        //.enableTableFieldAnnotation()   // 生成实体时生成字段的注解,包括@TableId注解等---
                        .naming(NamingStrategy.underline_to_camel)  // 数据库表和字段映射到实体的命名策略,为下划线转驼峰
                        .columnNaming(NamingStrategy.underline_to_camel)
                        //.idType(IdType.AUTO)    // 全局主键类型为AUTO(自增)
                        .enableLombok() // 支持lombok开启注解
                        // .logicDeleteColumnName("deleted")   // 逻辑删除字段名(数据库)
                        //.logicDeletePropertyName("deleted") // 逻辑删除属性名(实体)
                        //.addTableFills(new Column("create_time", FieldFill.INSERT)) // 自动填充配置  create_time  update_time 两种方式
                        //.addTableFills(new Property("updateTime", FieldFill.INSERT_UPDATE))
                        .versionColumnName("version")   // 开启乐观锁
                        .disableSerialVersionUID()  // 禁用生成 serialVersionUID,默认值:true
                        .enableChainModel() // 开启实体类链式编程
                        //.formatFileName("%") // 实体名称格式化为XXXEntity   formatFileName("%sEntity")
        );

        /**
         * 6.2 Controller策略配置
         */
        fastAutoGenerator.strategyConfig(
                strategyConfigBuilder -> strategyConfigBuilder.controllerBuilder()
                        .fileOverride()//覆盖文件
                        .enableRestStyle()  // 开启生成@RestController控制器
                        .enableHyphenStyle()    // 开启驼峰转连字符 localhost:8080/hello_id_2
        );

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

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

        /** 7.生成代码
         *
         */
        // fastAutoGenerator.templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
        fastAutoGenerator.execute();
    }
}


 pom依赖文件

  <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--数据库驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.28</version>
        </dependency>
        <!--Lombok-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
        <!--mybatis-plus-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.1</version>
        </dependency>
        <!--自动生成器-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.5.2</version>
        </dependency>
        <!--velocity模板引擎-->
        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity-engine-core</artifactId>
            <version>2.3</version>
        </dependency>
        <!--springboot测试类-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!--Swagger-->
        <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.9.2</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.9.2</version>
        </dependency>
    </dependencies>

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个简单mybatis-plus自动生成代码的demo: 1. 首先,我们需要在pom.xml文件中添加相关依赖: ```xml <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-generator</artifactId> <version>3.4.3</version> </dependency> <dependency> <groupId>org.apache.velocity</groupId> <artifactId>velocity-engine-core</artifactId> <version>2.3.0</version> </dependency> ``` 2. 接着,在resources目录下创建一个generator目录,用于存放代码生成器的配置文件。 3. 在generator目录下创建一个generatorConfig.properties文件,用于配置代码生成器的相关参数,具体可以参考如下示例: ```properties # 数据库连接信息 spring.datasource.url=jdbc:mysql://localhost:3306/mybatis_plus_demo?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC spring.datasource.username=root spring.datasource.password=123456 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver # 代码生成器配置 mybatis-plus.global-config.author=your name mybatis-plus.global-config.outputDir=src/main/java mybatis-plus.global-config.enableSwagger=true mybatis-plus.strategy.superEntityClass=com.baomidou.mybatisplus.extension.activerecord.Model mybatis-plus.strategy.superMapperClass=com.baomidou.mybatisplus.core.mapper.BaseMapper mybatis-plus.strategy.superServiceClass=com.baomidou.mybatisplus.extension.service.IService mybatis-plus.strategy.superServiceImplClass=com.baomidou.mybatisplus.extension.service.impl.ServiceImpl mybatis-plus.generator.fileOverride=true mybatis-plus.generator.entityLombokModel=true mybatis-plus.generator.basePackage=com.example.mybatisplus mybatis-plus.generator.controllerPackage=com.example.mybatisplus.controller mybatis-plus.generator.servicePackage=com.example.mybatisplus.service mybatis-plus.generator.serviceImplPackage=com.example.mybatisplus.service.impl mybatis-plus.generator.mapperPackage=com.example.mybatisplus.mapper mybatis-plus.generator.xmlPackage=mapper mybatis-plus.generator.tableNames=user mybatis-plus.generator.includeTables=user ``` 4. 接下来,我们需要编写代码生成器的启动,具体代码如下: ```java package com.example.mybatisplus.generator; import com.baomidou.mybatisplus.annotation.DbType; 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.rules.NamingStrategy; /** * mybatis-plus代码生成器 */ public class CodeGenerator { public static void main(String[] args) { // 1. 全局配置 GlobalConfig globalConfig = new GlobalConfig(); globalConfig.setOutputDir("src/main/java"); // 生成文件的输出目录 globalConfig.setAuthor("your name"); // 作者 globalConfig.setOpen(false); // 是否打开输出目录 globalConfig.setFileOverride(true); // 是否覆盖已有文件 globalConfig.setIdType(IdType.AUTO); // 主键型 globalConfig.setServiceName("%sService"); // Service接口的名称 globalConfig.setBaseResultMap(true); // 是否开启BaseResultMap globalConfig.setBaseColumnList(true); // 是否开启baseColumnList globalConfig.setSwagger2(true); // 是否开启Swagger2 // 2. 数据源配置 DataSourceConfig dataSourceConfig = new DataSourceConfig(); dataSourceConfig.setDbType(DbType.MYSQL); // 数据库型 dataSourceConfig.setUrl("jdbc:mysql://localhost:3306/mybatis_plus_demo?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC"); dataSourceConfig.setUsername("root"); // 数据库用户名 dataSourceConfig.setPassword("123456"); // 数据库密码 dataSourceConfig.setDriverName("com.mysql.cj.jdbc.Driver"); // 数据库驱动 // 3. 包名配置 PackageConfig packageConfig = new PackageConfig(); packageConfig.setParent("com.example.mybatisplus"); // 包名 packageConfig.setController("controller"); // Controller包名 packageConfig.setEntity("entity"); // Entity包名 packageConfig.setService("service"); // Service包名 packageConfig.setServiceImpl("service.impl"); // ServiceImpl包名 packageConfig.setMapper("mapper"); // Mapper包名 // 4. 策略配置 StrategyConfig strategyConfig = new StrategyConfig(); strategyConfig.setNaming(NamingStrategy.underline_to_camel); // 数据库表映射到实体的命名策略 strategyConfig.setColumnNaming(NamingStrategy.underline_to_camel); // 数据库表字段映射到实体的命名策略 strategyConfig.setEntityLombokModel(true); // 是否使用lombok注解 strategyConfig.setRestControllerStyle(true); // 是否使用RestController注解 strategyConfig.setInclude("user"); // 要生成的表名 strategyConfig.setControllerMappingHyphenStyle(true); // 是否开启controller名称的连字符风格 // 5. 代码生成器配置 AutoGenerator generator = new AutoGenerator(); generator.setGlobalConfig(globalConfig); generator.setDataSource(dataSourceConfig); generator.setPackageInfo(packageConfig); generator.setStrategy(strategyConfig); generator.execute(); } } ``` 5. 最后,我们只需要运行CodeGenerator即可自动生成代码。生成的代码会在src/main/java目录下的对应包名中。 以上就是一个简单mybatis-plus自动生成代码的demo,希望能帮助到你。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值