MyBatisPlus入门学习:利用MP代码生成器快速开发

MyBatisPlus入门学习:利用MP代码生成器快速开发

参考官网:https://baomidou.com/pages/779a6e/#%E5%BF%AB%E9%80%9F%E5%85%A5%E9%97%A8

新版代码生成器学习,功能就是根据数据库中的表自动生成实体、mapper、xml、controller、service等
默认你项目已经添加了MP相关的依赖

没有可以参考MP快速入门

依赖

pom.xml中添加如下依赖

<!--mybatis-plus代码生成器-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.5.2</version>
        </dependency>

        <!--mybatis-plus生成器模板引擎依赖-->
        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity-engine-core</artifactId>
            <version>2.3</version>
        </dependency>

 <!--  Swagger2 接口文档-->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.9.2</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.9.2</version>
        </dependency>
        
         <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>4.3.25.RELEASE</version>
        </dependency>
编码

我沿用了上一篇MP快速入门的项目结构

如图:在这里插入图片描述

我这里是单个项目就直接写个工具类了

src\main\java\com.example\mp_demo下新建utils包并新建

CodeGeneratorUtil.java文件

我这里数据库singer表如图:
在这里插入图片描述

package com.example.mp_demo.utils;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.fill.Column;

import java.util.Collections;

/**
 * MP代码生成器3.5.2
 * @author qingchen
 * @date 8/8/2022 下午 4:36
 */

public class CodeGeneratorUtil {
    /**
     * 项目根目录
     */
    private static final String PROJECT_ROOT_PATH = System.getProperty("user.dir");

    public static void main(String[] args) {
        // 1、数据源配置 需要修改为自己的
        DataSourceConfig.Builder datasourceBuilder = new DataSourceConfig.Builder(
                "jdbc:mysql://localhost:3306/java_demo?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=UTC",
                "root",
                "1234"
        );

        // 2、创建代码生成器对象
        FastAutoGenerator generator = FastAutoGenerator.create(datasourceBuilder);

        // 3、全局配置
        generator.globalConfig(builder -> {
            // 设置作者  需要修改为自己的
            builder.author("qingchen")
                    // 定义生成的实体类中日期类型
                    .dateType(DateType.ONLY_DATE)
                    // 注释时间策略。
                    .commentDate("yyyy-MM-dd")
                    // 生成后是否打开资源管理器:否
                    .disableOpenDir()
                    // 开启 swagger 模式。如果开启,需要导入 swagger 的 pom 依赖
                    .enableSwagger()
                    // 指定输出目录 需要修改为自己的
                    //我这里是子项目所以加上了子项目名称,正常填"/src/main/java"
                    .outputDir(PROJECT_ROOT_PATH + "/MP_demo/src/main/java");
        });

        // 4、包配置
        generator.packageConfig(builder -> {
            // 父包名  需要修改为自己的
            builder.parent("com.example.mp_demo")
                    // 将要生成的模块名称.
//                    .moduleName("")
                    // 设置生成的 控制层 文件夹名称
                    .controller("controller")
                    // 设置生成的 实体类 文件夹名称
                    .entity("entity")
                    // 设置生成的 服务层 文件夹名称
                    .service("service")
                    // 设置生成的 映射层 文件夹名称
                    .mapper("mapper")
                    // mapper.xml 文件路径。单模块下,其他文件路径默认即可。 ;  需要修改为自己的
                    //我这里是子项目所以加上了子项目名称,正常填"/src/main/java/com/xxx/xxx/mapper"
                    .pathInfo(Collections.singletonMap(OutputFile.xml, PROJECT_ROOT_PATH + "/MP_demo/src/main/java/com/example/mp_demo/mapper"));
        });

        // 5、策略配置
        generator.strategyConfig(builder -> {
            // 设置数据库表名称. 如果不设置,则会将数据库中所有表都生成。(注意:需要与数据库中表名称一致,前缀也需添加)
            // 需要修改为自己的
            builder.addInclude("singer")
                    // 过滤表前缀,生成的类名会去掉这个前缀
                    .addTablePrefix("user_", "sf_", "sk_")

                    // 第一阶段
                    // 是否生成 entity:是
                    .entityBuilder()
                    // 开启lombok
                    .enableLombok()
                    // 设置生成的实体类名称. 默认配置不带 Entity 后缀,我习惯添加上
                    .convertFileName(entityName -> entityName)
                    // 开启实体时字段注解。 会在生成的实体类的字段上,添加注解: @TableField("nickname")
                    .enableTableFieldAnnotation()
                    // 设置主键Id生成策略,设置为默认的雪花算法(ASSIGN_ID)
                    .idType(IdType.ASSIGN_ID)
                    // 逻辑删除字段名。(与数据库中字段对应)
                    .logicDeleteColumnName("status")
                    // 逻辑删除属性名。(定义在实体中的属性)。 会在生成的实体类的字段上,添加注解:@TableLogic
                    .logicDeletePropertyName("status")
                    // 会在实体类的该字段上追加注解[@TableField(value = "create_time", fill = FieldFill.INSERT)]
                    .addTableFills(new Column("create_time", FieldFill.INSERT))
                    // 会在实体类的该字段上追加注解[@TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)]
                    .addTableFills(new Column("update_time", FieldFill.INSERT_UPDATE))

                    // 第二阶段
                    .mapperBuilder()
                    // 开启 @Mapper 注解。 会在生成的 mapper 类上,添加注解:@Mapper
                    .enableMapperAnnotation()
                    // 启用 BaseResultMap 生成。 会在 mapper.xml文件生成[通用查询映射结果]配置。
                    .enableBaseResultMap()
                    // 启用 BaseColumnList。 会在mapper.xml文件生成[通用查询结果列 ]配置
                    .enableBaseColumnList()

                    // 第三阶段
                    .serviceBuilder()
                    // 设置生成的实体类名称。 默认配置名称前有个I,我习惯去掉
                    .convertServiceFileName(serviceName -> serviceName + "Service")
                    // 第四阶段
                    .controllerBuilder()
                    // 开启 @RestController 注解。 会在生成的 Controller 类上,添加注解:@RestController
                    .enableRestStyle()

                    // 开启驼峰转连字符
                    .enableHyphenStyle();
        });

        // 6. 模板引擎配置,默认为 Velocity , 可选模板引擎 Freemarker 或 Beetl
        // generator.templateEngine(new FreemarkerTemplateEngine());

        generator.execute();
    }
}

根据注释修改成自己的,运行main方法即可

生成后项目结构如图:

在这里插入图片描述

对比:

在这里插入图片描述

END

到这里一个简单的代码生成器就写好了,可以快速进行需求上的开发,不用自己写mapper、xml这些重复代码了。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清尘丿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值