前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SpringBoot 集成 MybatisPlus 十二——代码生成器

SpringBoot 集成 MybatisPlus 十二——代码生成器

原创
作者头像
用户8100582
发布2023-11-17 20:42:42
4090
发布2023-11-17 20:42:42
举报
文章被收录于专栏:Java多线程Java多线程

1 代码生成器简介

代码生成器可以自动生成MybatisPlus代码。

如果不愿意手动编写和数据表对应的实体类及相关映射文件,MybatisPlus为我们提供了相关的效率提升工具(偷懒神器)——代码生成器,它可以读取数据库中的表信息,生成相应的可以供我们使用 MybatisPlus 代码。

与 Mybatis 的代码生成器 Mybatis Generator 二者的区别是:

  • Mybatis Generator 是基于xml文件进行配置,MybatisPlus 代码生成器是基于 java 代码进行配置;
  • Mybatis Generator 可以生成实体类、mapper接口、mapper映射文件;MybatisPlus代码生成器可以生成实体类、mapper接口、mapper映射文件、service类、controller类,功能更加强大。

2 添加依赖

在项目下的 pom.xml 文件中添加 mybatis-plus代码生成器需要的依赖。

代码语言:txt
复制
<!--mybatis-plus代码生成器-->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-generator</artifactId>
    <version>3.5.1</version>
</dependency>
<!--mybatis-plus代码生成器依赖的模板引擎-->
<dependency>
    <groupId>org.apache.velocity</groupId>
    <artifactId>velocity-engine-core</artifactId>
    <version>2.2</version>
</dependency>

3 编写代码生成器的配置类

在配置类中除了数据库连接信息(URL,用户名,密码),主要分为三部分:

  • 全局配置
  • 包配置
  • 生成策略配置

3.1 全局配置

在全局配置中,可以设置生成类里注释信息中的:

作者信息、

日期格式,及:

生成类目的地址的父目录信息、

开启swagger设置、

日期类型等。

3.2 包配置

在包配置部分,主要设置所有生成类包名所在前缀信息,按照不同层级区分的包名。

例如 实体层、mapper层、服务层、控制层的包名信息。

3.3 策略配置

在策略配置项中,主要配置的是生成类格式及数据表与生成类的映射关系信息:

如 表名前缀、表名后缀、开始配置实体类、生成的实体类中启用 lombok 模板、表中列名与实体类属性名之间是否使用下划线与驼峰的转换关系等。

3.4 具体配置信息

代码语言:java
复制
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;

public class MyGeneratorUtil {
    public static void main(String[] args) {
        FastAutoGenerator.create("jdbc:mysql://127.0.0.1:3366/test", "root", "123456")
                //全局配置
                .globalConfig(builder -> {
                   builder.author("tester") //设置作者
                           .commentDate("yyyy-MM-dd") //注释日期格式
                           .outputDir(System.getProperty("user.dir") + "/testMybatisPlusAR/src/main/java") //指定输出目录
                           .fileOverride(); //覆盖文件
                })
                //包配置
                .packageConfig(builder -> {
                    builder.parent("com.test2") //包名的前缀
                            .entity("domain") //实体类包名
                            .mapper("mapper") //mapper接口包名
                            .service("service") //service包名
                            .controller("controller") //controller包名
                            .xml("mapper"); //映射文件包名
                })
                //策略配置
                .strategyConfig(builder -> {
                    builder.addInclude("User") //设置需要生成的表名或排除的表名,支持多张表
                            .addTablePrefix("") //设置表名前缀
                            .addTableSuffix("") //设置表名后缀
                            .entityBuilder() //开始实体类配置
                            .enableLombok() //开启lombok模型
                            .naming(NamingStrategy.underline_to_camel) //表名下划线转驼峰
                            .columnNaming(NamingStrategy.underline_to_camel); //列名下划线转驼峰
                })
                .execute();
    }
}

4 生成代码

运行上一步中创建的配置类,生成代码。

生成的代码效果如下

打开生成的实体类,因为所有属性及属性类型都是从数据库中读取,所以由程序控制的乐观锁及逻辑删除等功能是无法获取到的,缺少相应的注解外,可以看到与我们自己创建实体类已经相当接近,可以大幅减少实际的工作量。

代码语言:java
复制
package com.test2.domain;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import lombok.Getter;
import lombok.Setter;

/**
 * <p>
 * 
 * </p>
 *
 * @author tester
 * @since 2023-04-15
 */
@Getter
@Setter
@TableName("user")
public class User implements Serializable {

    private static final long serialVersionUID = 1L;

    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;

    private String username;

    private String gendar;

    private String remark;

    private Integer version;

    private Integer isDeleted;


}

我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 代码生成器简介
  • 2 添加依赖
  • 3 编写代码生成器的配置类
    • 3.1 全局配置
      • 3.2 包配置
        • 3.3 策略配置
          • 3.4 具体配置信息
          • 4 生成代码
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档