springboot3.x集成mybatis-plus代码生成工具

一、添加mybatis-plus和代码生成器相关依赖包

        <!-- mybatis plus -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-spring-boot3-starter</artifactId>
            <version>3.5.5</version>
        </dependency>

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-support</artifactId>
            <version>2.3.3</version>
        </dependency>
        <!-- mybatis plus 代码生成器依赖 -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.5.5</version>
        </dependency>
        <!-- 代码生成器模板 -->
        <dependency>
            <groupId>org.freemarker</groupId>
            <artifactId>freemarker</artifactId>
        </dependency>

二、代码生成工具类

package com.example.demo.mybatis.tool;

import java.sql.Types;
import java.util.Collections;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
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 com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;

/**
 * @author lidongyang
 * @date 2024/10/10 15:05
 * @since V1.0.0
 */
public class MysqlGenerator {



    public static void main(String[] args) {

        String url =
                "jdbc:mysql://127.0.0.1:3306/demo?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai";
        String username = "root";
        String password = "1234567";

        // 获取当前项目路径
        String projectPath = System.getProperty("user.dir");


        FastAutoGenerator.create(url, username, password)

                // 全局配置
                .globalConfig(builder -> {
                    builder
                            // .enableSwagger() // 是否启用swagger注解
                            .author("ldy") // 作者名称
                            .dateType(DateType.ONLY_DATE) // 时间策略
                            .commentDate("yyyy-MM-dd") // 注释日期
                            .outputDir(projectPath + "/src/main/java") // 输出目录
                            .disableOpenDir(); // 生成后禁止打开所生成的系统目录
                })
                // java和数据库字段的类型转换
                .dataSourceConfig(builder -> builder.typeConvertHandler((globalConfig, typeRegistry, metaInfo) -> {
                    int typeCode = metaInfo.getJdbcType().TYPE_CODE;
                    if (typeCode == Types.SMALLINT || typeCode == Types.TINYINT) {
                        // 自定义类型转换
                        return DbColumnType.INTEGER;
                    }
                    return typeRegistry.getColumnType(metaInfo);

                }))

                // 包配置
                .packageConfig(builder -> {
                    builder.parent("com.example.demo") // 父包名
                            // .moduleName("task") // 模块包名
                            .controller("controller").entity("pojo.domain") // 实体类包名
                            .service("service") // service包名
                            .serviceImpl("service.impl") // serviceImpl包名
                            //.mapper("mapper") // mapper包名
                            .xml("mapper.xml").pathInfo(Collections.singletonMap(OutputFile.xml,
                                    projectPath + "/src/main/resources/mapper"))
                            .build();
                })

                // 策略配置
                .strategyConfig(builder -> {
                    builder.enableCapitalMode()// 驼峰
                            .enableSkipView()// 跳过视图
                            .disableSqlFilter()
                            // .addTablePrefix("t_") // 增加过滤表前缀
                            // .addTableSuffix("_db") // 增加过滤表后缀
                            // .addFieldPrefix("t_") // 增加过滤字段前缀
                            // .addFieldSuffix("_field") // 增加过滤字段后缀
                            .addInclude("table111") // 你的表名称

                            // Entity 策略配置
                            .entityBuilder().enableFileOverride().enableLombok() // 开启lombok
                            .enableChainModel() // 链式
                            .enableRemoveIsPrefix() // 开启boolean类型字段移除is前缀
                            .enableTableFieldAnnotation() // 开启生成实体时生成的字段注解
                            .versionColumnName("version") // 乐观锁数据库字段
                            .versionPropertyName("version") // 乐观锁实体类名称
                            .logicDeleteColumnName("delflag") // 逻辑删除数据库中字段名
                            .logicDeletePropertyName("delFlag") // 逻辑删除实体类中的字段名
                            .naming(NamingStrategy.underline_to_camel) // 表名 下划线 -》 驼峰命名
                            .columnNaming(NamingStrategy.underline_to_camel) // 字段名 下划线 -》 驼峰命名
                            .idType(IdType.ASSIGN_ID) // 主键生成策略 雪花算法生成id
                            .formatFileName("%s") // Entity 文件名称
                            // .addTableFills(new Column("create_time", FieldFill.INSERT)) // 表字段填充
                            // .addTableFills(new Column("update_time", FieldFill.INSERT_UPDATE)) // 表字段填充
                            // .enableColumnConstant()
                            // .enableActiveRecord()//MPlus中启用ActiveRecord模式,生成的实体类会继承activerecord.Model类,直接进行数据库操作

                            // Controller 策略配置
                            .controllerBuilder().enableFileOverride().enableHyphenStyle().enableRestStyle() // 开启@RestController
                            .formatFileName("%sController") // Controller 文件名称
                            // Service 策略配置
                            .serviceBuilder().enableFileOverride().formatServiceFileName("%sService") // Service 文件名称
                            .formatServiceImplFileName("%sServiceImpl") // ServiceImpl 文件名称

                            // Mapper 策略配置
                            .mapperBuilder().enableFileOverride().enableMapperAnnotation() // 开启@Mapper
                            .enableBaseColumnList() // 启用 columnList (通用查询结果列)
                            .enableBaseResultMap() // 启动resultMap
                            .formatMapperFileName("%sMapper") // Mapper 文件名称
                            .formatXmlFileName("%sMapper"); // Xml 文件名称
                }).templateEngine(
                        // 使用Freemarker引擎模板,默认的是Velocity引擎模板
                        new FreemarkerTemplateEngine())
                .templateConfig(builder -> {
                    builder.controller("/templates/controller.java").service("/templates/service.java")
                            .serviceImpl("/templates/serviceImpl.java")
                            // .mapper()
                            .build();
                }).execute(); // 执行
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值