Maven插件使用Mybatis Generator代码生成器简易版支持注释、Lombok、Swagger等插件

Github地址:GitHub - javthon/mybatis-generator-yml-maven-plugin: MyBatis Generator yml configuration, lombok plugin, swagger plugin support

在线体验:mybatis代码生成器

环境要求

  • 安装好Java8和一个IDE
  • 项目中使用了maven
  • 项目中使用了Mybatis3

如何使用

Step 1: 确保您的工程是maven工程,在您的maven pom.xml文件中添加mybatis-generator-yml-maven-plugin插件,下载插件需要等待几分钟:

<plugin>
    <groupId>io.github.javthon</groupId>
    <artifactId>mybatis-generator-yml-maven-plugin</artifactId>
    <version>0.0.1</version>
    <configuration>
        <configurationFile>src/main/resources/generatorConfig.yml</configurationFile>
    </configuration>
</plugin>

Step 2: 在resources目录下新建generatorConfig.yml,并将下方完整配置样例中的代码粘贴进去,按您对源码中配置的理解修改配置 或根据以下配置 说明修改配置

Step 3: 确保配置信息无误后运行mvn mybatis-generator-yml:generate,在Intellij IDEA中的maven窗口的plugins下可以找到这个命令,双击就能运行

配置

完整配置样例

mybatisGenerator:
    datasource:
        type: mysql
        address: localhost:3306
        db: test
        username: root
        password: root

    targetPackage:
        model: com.example.domain
        mapper: com.example.dao
        javaXmlFilesSamePackage: true

    targetRuntime: MyBatis3
    mapperSuffixName: mapper
    java8: false
    disableExample: true

    plugins:
        comment: true
        lombok: false
        swagger: false
        mapperAnnotation: false
        serializable: false

    tables:
        - user
        - role

配置概览

属性类型默认值是否必须描述
datasourceMap数据库的连接信息, 见下方的"数据源配置"
targetPackageMap生成代码的包路径,见下方targetPackage配置
targetRuntimeStringMyBatis3mybatis generator生产代码的格式,见下方targetRuntime可选项
mapperSuffixNameStringmappermapper类或xml文件的后缀名,如果将此属性设置为dao,并且表名是user,它将生成UserDao.java和UserDao.xml,如果targetRuntime设置为MyBatis3DynamicSql,则此属性将不起作用
java8Booleanfalse如果为true,则生成模型日期字段将使用Java8的LocalDateTime或LocalDate,否则使用Date
disableExampleBooleantrue此属性仅在targetRuntime为MyBatis3生效,为true时mapper不生成"by example"代码
pluginsMap配置是否开启注释, lombok, swagger, mapperAnnotation, serializable等插件, 详情见下方插件配置
tablesList多个表格名,配置方式见generatorConfig.yml样例

数据源配置

属性类型是否必须描述
typeString数据库类型, 当前可选值为mysql, sqlserver,如果您使用的数据库不在其中,请new issues
addressStringIP和端口号,如:192.168.1.1:3306
dbString数据库名
usernameString数据库用户名
passwordString数据库密码

targetPackage配置

属性类型是否必须描述
modelString生成模型的包路径, 如:com.example.domain
mapperString生成的java接口和xml mapper的包路径, 如:com.example.mapper
javaXmlFilesSamePackageBoolean如果是true,java接口和xml mapper会生成在一个包下,如果是false,xml mapper代码将生成至resources目录下,该属性仅在targetRuntime为MyBatis3Simple或MyBatis3时可用

插件配置

属性类型是否必须描述
commentBoolean是否开启model的注释
lombokBoolean是否使用lombok,不生成setter和getter
swaggerBoolean是否使用swagger2注解
mapperAnnotationBoolean是否在mapper类上加@Mapper注解
serializableBoolean是否实现Serializable接口

targetRuntime的可选值

描述
MyBatis3DynamicSql生成的代码依赖于MyBatis动态SQL库。 生成的代码为查询构造提供了极大的灵活性。 不生成XML。mybatis generator 1.4.0官方推荐此方式
MyBatis3生成mapper java接口和xml配置文件。有"by example" 或者 "selective" 方法,代码比较啰嗦
MyBatis3Simple生成mapper java接口和xml配置文件。没有"by example" 或者"selective"方法,代码较简洁

插件介绍

未使用任何插件前代码

import java.util.Date;

public class Role {
    private Long id;

    private String name;

    private String remark;

    private Date createTime;

    private Date updateTime;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getRemark() {
        return remark;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }

    public Date getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    public Date getUpdateTime() {
        return updateTime;
    }

    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }
}

注释插件

使用后在每个字段上方生成数据库中对应字段的注释:

import java.util.Date;

public class Role {
    /**
     * id
     */
    private Long id;

    /**
     * 角色名称
     */
    private String name;

    /**
     * 角色备注
     */
    private String remark;

    /**
     * 创建时间
     */
    private Date createTime;

    /**
     * 更新时间
     */
    private Date updateTime;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getRemark() {
        return remark;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }

    public Date getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    public Date getUpdateTime() {
        return updateTime;
    }

    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }
}

lombok插件

使用本插件需要加入lombok的依赖,并且要安装开发工具对lombok支持的插件。使用本插件后没有setter和getter,大大简化了代码:

import java.util.Date;
import lombok.Data;

/**
 * role
 * @author Tensorflow
 * @date 2020-09-08 22:24:45
 */
@Data
public class Role {
    private Long id;

    private String name;

    private String remark;

    private Date createTime;

    private Date updateTime;
}

swagger插件

使用本插件需要加入swagger2的依赖,项目中使用swagger2作为接口测试框架的可以使用此插件:

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.util.Date;

@ApiModel(value="com.example.domain.Role")
public class Role {
    @ApiModelProperty(value="id")
    private Long id;

    @ApiModelProperty(value="角色名称")
    private String name;

    @ApiModelProperty(value="角色备注")
    private String remark;

    @ApiModelProperty(value="创建时间")
    private Date createTime;

    @ApiModelProperty(value="更新时间")
    private Date updateTime;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getRemark() {
        return remark;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }

    public Date getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    public Date getUpdateTime() {
        return updateTime;
    }

    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }
}

mapperAnnotation插件

在java mapper接口上添加了@Mapper注解

serializable插件

model实现了Serializable接口

Github地址:GitHub - javthon/mybatis-generator-yml-maven-plugin: MyBatis Generator yml configuration, lombok plugin, swagger plugin support

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值