最新!Mybatis Plus 自动生成代码 特详细

根据以上代码,可以生成一篇博客文章介绍如何使用 MyBatis-Plus 的代码生成器来自动生成基于 Spring Boot 的项目代码。文章可以按照以下结构进行组织:


使用 MyBatis-Plus 代码生成器快速生成 Spring Boot 项目代码

介绍

在开发过程中,我们经常需要编写大量的 CRUD(创建、读取、更新、删除)代码,特别是针对数据库表的操作。为了提高开发效率,减少重复工作,可以借助 MyBatis-Plus 提供的代码生成器来自动生成部分代码。

本文将介绍如何使用 MyBatis-Plus 的代码生成器,快速生成基于 Spring Boot 的项目代码。

步骤

  1. 配置数据源信息

    在代码中配置数据库连接信息,包括数据库 URL、用户名和密码。

  2. 设置需要生成代码的表名

    指定需要生成代码的数据库表名,可以是单个表或者多个表。

  3. 配置全局信息

    设置生成文件的输出目录、作者名称、日期格式等全局配置信息。

  4. 配置包信息

    指定生成代码的包名,包括实体类、服务接口、服务实现类、Mapper 接口、XML 映射文件和控制器类等。

  5. 配置模板信息

    自定义生成代码的模板文件路径,包括实体类模板、服务接口模板、服务实现类模板、Mapper 接口模板、XML 映射文件模板和控制器类模板。

  6. 配置策略信息

    设置生成代码的策略,包括命名策略、字段策略、乐观锁配置、逻辑删除配置、字段填充配置等。

  7. 执行代码生成器

    调用代码生成器的 execute 方法,执行代码生成器,生成相应的代码文件。

示例代码

java

@SpringBootTest
class MybatisDemoApplicationTests {

    @Test
    void contextLoads() {
        /* 数据库配置 */
        DataSourceConfig dataSourceConfig =
                new DataSourceConfig.Builder("jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&useSSL=false", "root", "123456")
                        .dbQuery(new MySqlQuery())
                        .build();


        String[] tableNames = {"t_User", "t_Student", "t_School", "t_Teacher"};
        for (String tableName : tableNames) {/* 创建代码生成器对象 */
            AutoGenerator generator = new AutoGenerator(dataSourceConfig);

            String property = System.getProperty("user.dir");

            /* 全局配置 */
            com.baomidou.mybatisplus.generator.config.GlobalConfig globalConfig = new com.baomidou.mybatisplus.generator.config.GlobalConfig.Builder()
                    .fileOverride() // 如果文件存在,是否覆盖
                    .outputDir(property + "/src/main/java") // 生成文件的输出目录
                    .author("菜菜") // 作者名称
                    .enableSwagger() // 是否开启Swagger2
                    .dateType(DateType.TIME_PACK) // 时间类型,默认使用java.util.Date
                    .commentDate("yyyy-MM-dd") // 注释中的日期格式
                    .build();

            generator.global(globalConfig);

            /* 包配置(PackageConfig) */
            PackageConfig packageConfig = new PackageConfig.Builder()
                    .parent("com.example.demo") // 父包名
                    .entity("entity") // 实体类包名
                    .service("service") // 服务接口包名
                    .serviceImpl("service.impl") // 服务实现类包名
                    .mapper("mapper") // Mapper接口包名
                    .xml("mapper.xml") // XML映射文件包名
                    .controller("controller") // 控制器类包名
                    .other("other") // 其他文件包名
                    .pathInfo(Collections.singletonMap(OutputFile.mapperXml, "D:\\code\\mybatis-demo\\src\\main\\resources\\mapper")) // 文件输出路径
                    .build();

            generator.packageInfo(packageConfig);

            /* 模板配置(TemplateConfig) */
            TemplateConfig templateConfig = new TemplateConfig.Builder()
                    .disable(TemplateType.ENTITY) // 禁用实体类的默认模板
                    .entity("/templates/entity.java") // 自定义实体类模板文件路径
                    .service("/templates/service.java") // 自定义服务接口模板文件路径
                    .serviceImpl("/templates/serviceImpl.java") // 自定义服务实现类模板文件路径
                    .mapper("/templates/mapper.java") // 自定义Mapper接口模板文件路径
                    .mapperXml("/templates/mapper.xml") // 自定义XML映射文件模板文件路径
                    .controller("/templates/controller.java") // 自定义控制器类模板文件路径
                    .build();

            generator.template(templateConfig);

            String formatTableName = tableName.substring(2);
            // 每次循环创建新的策略配置对象
            StrategyConfig strategyConfig = new StrategyConfig.Builder()
                    .enableCapitalMode() // 开启大写命名
                    .enableSkipView() // 是否跳过视图
                    .disableSqlFilter() // 禁用 SQL 过滤器
                    .addInclude(tableName) // 需要包含的表名,使用正则表达式
                    .build();

            // 实体配置
            strategyConfig.entityBuilder()
                    .disableSerialVersionUID() // 禁用 serialVersionUID
                    .enableChainModel() // 开启链式模型
                    .enableLombok() // 开启Lombok
                    .enableRemoveIsPrefix() // 移除字段名中的is前缀
                    .enableTableFieldAnnotation() // 开启字段注解
                    .enableActiveRecord() // 开启ActiveRecord模式
                    .versionColumnName("version") // 乐观锁字段名
                    .versionPropertyName("version") // 乐观锁属性名
                    .logicDeleteColumnName("deleted") // 逻辑删除字段名
                    .logicDeletePropertyName("deleted") // 逻辑删除属性名
                    .naming(NamingStrategy.no_change) // 命名策略:不改变原始表名
                    .columnNaming(NamingStrategy.underline_to_camel) // 字段命名策略:下划线转驼峰
                    .addTableFills(new Column("create_time", FieldFill.INSERT)) // 添加表填充字段
                    .addTableFills(new Property("update_time", FieldFill.INSERT_UPDATE)) // 添加表填充属性
                    .idType(IdType.AUTO) // 主键类型:自增
                    .formatFileName(formatTableName) // 文件名格式化
                    .build();

            // 控制器配置
            strategyConfig.controllerBuilder()
                    .enableRestStyle() // 开启RestController风格
                    .formatFileName(formatTableName + "Controller") // 控制器文件名格式化
                    .build();

            // 服务配置
            strategyConfig.serviceBuilder()
                    .formatServiceFileName(formatTableName + "Service") // 服务接口文件名格式化
                    .formatServiceImplFileName(formatTableName + "ServiceImpl") // 服务实现类文件名格式化
                    .superServiceImplClass((Class<?>) null) // 设置父类为空,即不继承任何父类
                    .build();

            // Mapper配置
            strategyConfig.mapperBuilder()
                    .superClass(BaseMapper.class) // Mapper接口的父类
                    .enableMapperAnnotation() // 开启Mapper注解
                    .enableBaseResultMap() // 开启基本结果映射
                    .enableBaseColumnList() // 开启基本列映射
                    .formatMapperFileName(formatTableName + "Mapper") // Mapper接口文件名格式化
                    .formatXmlFileName(formatTableName + "Mapper"); // XML映射文件名格式化

            // 应用策略配置到代码生成器
            generator.strategy(strategyConfig);
            /* 执行代码生成器 */
            generator.execute();
        }

    }


}

结语

通过使用 MyBatis-Plus 的代码生成器,我们可以快速生成基于 Spring Boot 的项目代码,节省开发时间,提高工作效率。希望本文对您有所帮助!


在文章中,你可以根据自己的理解和经验进行扩展和修改,添加更多详细的说明、示例代码和注意事项。

  • 11
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值