MyBatis-Plus 代码生成器使用教程

本文将介绍如何使用 MyBatis-Plus 代码生成器快速生成实体类、Mapper 接口、Service 接口和实现类。

1. 依赖引入

首先,需要在项目中添加 MyBatis-Plus 代码生成器的依赖:

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-generator</artifactId>
    <version>3.5.1</version>
</dependency>

2. 代码示例

以下代码示例展示了如何使用代码生成器生成相关代码:

package com.cd.mybatisplus;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.querys.MySqlQuery;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.DbColumnType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;

import java.util.Collections;

//代码生成器
public class MyGenerator {
    public static void main(String[] args) {
        /**
         * 先配置数据源
         */
        MySqlQuery mySqlQuery = new MySqlQuery() {
            @Override
            public String[] fieldCustom() {
                return new String[]{"Default"};
            }
        };

        DataSourceConfig dsc = new DataSourceConfig.Builder("jdbc:mysql://localhost:3306/exam?serverTimezone=Asia/Shanghai", "root", "123456")
                .dbQuery(mySqlQuery).build();
        //通过datasourceConfig创建AutoGenerator
        AutoGenerator generator = new AutoGenerator(dsc);

        /**
         * 全局配置
         */
        String projectPath = System.getProperty("user.dir"); //获取项目路径
        String filePath = projectPath + "/src/main/java";  //java下的文件路径
        GlobalConfig global = new GlobalConfig.Builder()
                .outputDir(filePath)//生成的输出路径
                .author("young")//生成的作者名字
                //.enableSwagger()开启swagger,需要添加swagger依赖并配置
                .dateType(DateType.TIME_PACK)//时间策略
                .commentDate("yyyy年MM月dd日")//格式化时间格式
                .fileOverride()//覆盖生成文件
                .build();

        /**
         * 包配置
         */
        PackageConfig packages = new PackageConfig.Builder()
                .entity("pojo")//实体类包名
                .parent("com.cd.mybatisplus")//父包名。如果为空,将下面子包名必须写全部, 否则就只需写子包名
                .controller("controller")//控制层包名
                .mapper("dao")//mapper层包名
                .service("service")//service层包名
                .serviceImpl("service.impl")//service实现类包名
                .other("output")//输出自定义文件时的包名
                .pathInfo(Collections.singletonMap(OutputFile.mapperXml, projectPath + "/src/main/resources/mapper")) //路径配置信息,就是配置各个文件模板的路径信息,这里以mapper.xml为例
                .build();

        /**
         * 模板配置
         */
        TemplateConfig template = new TemplateConfig.Builder().build();

        /**
         * 策略配置开始
         */
        StrategyConfig strategyConfig = new StrategyConfig.Builder()
                .enableCapitalMode()//开启全局大写命名
                .addInclude()//添加表匹配,指定要生成的数据表名,不写默认选定数据库所有表
                .entityBuilder() //实体策略配置
                .enableChainModel()//开启链式模型
                .enableLombok()//开启lombok
                .enableRemoveIsPrefix()//开启 Boolean 类型字段移除 is 前缀
                .enableTableFieldAnnotation()//开启生成实体时生成字段注解
                 //.addTableFills()添加表字段填充
                .naming(NamingStrategy.underline_to_camel)//数据表映射实体命名策略:默认下划线转驼峰underline_to_camel
                .columnNaming(NamingStrategy.underline_to_camel)//表字段映射实体属性命名规则:默认null,不指定按照naming执行
                .idType(IdType.AUTO)//添加全局主键类型
                .formatFileName("%s")//格式化实体名称,%s取消首字母I
                .build()
                 .mapperBuilder()//mapper文件策略
                .enableMapperAnnotation()//开启mapper注解 //                .enableBaseResultMap()//启用xml文件中的BaseResultMap 生成 //                .enableBaseColumnList()//启用xml文件中的BaseColumnList                 //.cache(缓存类.class)设置缓存实现类
                .formatMapperFileName("%sMapper")//格式化Dao类名称
                .formatXmlFileName("%sMapper")//格式化xml文件名称
                .build()
                 .serviceBuilder()//service文件策略
                .formatServiceFileName("%sService")//格式化 service 接口文件名称
                .formatServiceImplFileName("%sServiceImpl")//格式化 service 接口文件名称
                .build()
                 .controllerBuilder()//控制层策略
                 //.enableHyphenStyle()开启驼峰转连字符,默认:false
                .enableRestStyle()//开启生成@RestController
                .formatFileName("%sController")//格式化文件名称
                .build();
        /*至此,策略配置才算基本完成!*/
        /**
         * 将所有配置项整合到AutoGenerator中进行执行
         */
        generator.global(global)
                .template(template) //                .injection(injectionConfig)
                .packageInfo(packages)
                .strategy(strategyConfig)
                .execute();
    }
}

3. 代码说明

  1. 数据源配置: 使用 DataSourceConfig 类配置数据库连接信息,包括数据库地址、用户名、密码等。示例代码中使用了 MySQL 数据库,并使用了 MySqlQuery 类来指定数据库类型。
  2. 全局配置: 使用 GlobalConfig 类配置生成代码的全局信息,包括输出路径、作者、日期格式、是否覆盖已有文件等。示例代码中将生成的代码输出到 src/main/java 目录下,作者设置为 young,日期格式为 yyyy年MM月dd日,并且允许覆盖已有文件。
  3. 包配置: 使用 PackageConfig 类配置代码生成的包信息,包括实体类包名、控制层包名、Mapper 接口包名、Service 接口包名、Service 实现类包名等。示例代码中将实体类包名设置为 pojo,控制层包名设置为 controller,Mapper 接口包名设置为 dao,Service 接口包名设置为 service,Service 实现类包名设置为 service.impl
  4. 模板配置: 使用 TemplateConfig 类配置代码生成的模板信息,可以自定义生成代码的模板文件。示例代码中没有自定义模板,使用默认的模板生成代码。
  5. 策略配置: 使用 StrategyConfig 类配置代码生成的策略信息,包括是否开启全局大写命名、是否开启链式模型、是否开启 lombok、是否开启 Boolean 类型字段移除 is 前缀等。示例代码中开启了全局大写命名、链式模型、lombok、Boolean 类型字段移除 is 前缀等。
  6. 执行生成: 使用 AutoGenerator 类将所有配置信息整合到一起,并执行生成代码。

4. 注意事项

  1. 以上代码示例仅供参考,实际使用中需要根据具体情况进行调整。
  2. 需要注意数据库类型,如果使用其他数据库,需要使用相应的 Query 类来配置数据库类型。
  3. 可以通过修改 addInclude 方法来指定要生成的数据表名。
  4. 可以通过修改 formatFileName 方法来格式化生成的文件名。

5. 总结

MyBatis-Plus 代码生成器可以帮助开发者快速生成实体类、Mapper 接口、Service 接口和实现类,简化开发流程,提高开发效率。

希望本文能够帮助您更好地理解和使用 MyBatis-Plus 代码生成器。如果您还有其他问题,请随时提问。

MyBatis-Plus 代码生成器使用教程:快速生成实体、Mapper、Service 代码

原文地址: http://www.cveoy.top/t/topic/c4L4 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录