Java MyBatis生成文件的拓展插件(分页、重命名WithBlobs)

Java目前最常见的开发场景,依然是大数据、Web应用、后台服务开发。而在这些开发中,常用MySQL数据库,而MySQL in Java常用的是MyBatis。

在团队开发中,无可避免的开发环境有众多不同。IDE(IDEA、Eclipse)、发行版类型(社区版、旗舰版)、版本号(2018.1、2018.2、2018.3、2019.1...)、插件工具(better-mybatis-generator、Free Mybatis plugin...)这些都会各不相同,为了避免协助开发时,先后生成的MyBatis文件不统一,也为了更方便地去生成,采用此解决方案

1. 使用与个人开发环境无关的配置(maven pom配置)
2. 使用易获取、可拓展的插件工具(org.mybatis.generator:mybatis-generator-maven-plugin)
3. 实现插件工具的业务定制拓展功能(定制开发项目 nbj-mybatis-generator-plugins )

1. 使用与个人开发环境无关的配置

查阅 MyBatis 官网资料,可以了解如何进行配置
MyBatis Generator 快速开始指导
基于Maven执行MyBatis Generator

在pom.xml里增加build插件


     ...
     
       ...
       
        ...
        
          org.mybatis.generator
          mybatis-generator-maven-plugin
          1.4.0
        
        ...
      
      ...
    
    ...
  

生成文件:在Maven工具栏,执行generate,或者命令行 mvn mybatis-generator:generate


IDEA 执行 mybatis-generator:generator

错误1:没有增加mysql connector依赖,会报错获取JDBC Driver失败,形如:

Failed to execute goal org.mybatis.generator:mybatis-generator-maven-plugin:1.4.0:generate (default-cli) on project nbj-mybatis-generator-plugins: Execution default-cli of goal org.mybatis.generator:mybatis-generator-maven-plugin:1.4.0:generate failed: Exception getting JDBC Driver

解决1:具体增加依赖形如:

解决1:插件依赖 mysql-connector-java @ pom.xml

错误2:没有配置 generatorConfig.xml,会报错配置文件不存在,形如:

Failed to execute goal org.mybatis.generator:mybatis-generator-maven-plugin:1.4.0:generate (default-cli) on project xxxx: configfile /Users/nextbin/xxxxxxxxx/xxxx/src/main/resources/generatorConfig.xml does not exist

解决2:修改配置文件路径,或新增配置文件

解决2:修改配置文件路径 @ pom.xml

解决2:新增配置文件 @ generatorConfig.xml

2. 使用易获取、可拓展的插件工具

generator默认生成的文件为:Domain.java、DomainWithBlobs.java、DomainMapper.java、DomainMapper.xml

但是由于默认生成的功能比较有限,没有分页功能,没有Domain Builder功能,我们需要引入插件工具,这里首先引入官方自带的 MyBatis Generator Plugins: Domain-With-Builder和RowBounds。

generator 引入官方插件

由此配置的 generatorConfig.xml 可以使得生成的Domain带有 With-Builder,而Mapper.java带有RowBounds参数的分页查询。结果如下两图:


使用官方插件的实体类With-Builder效果

使用官方插件的Mapper.java效果

3. 实现插件工具的业务定制拓展功能

我们通过官方插件 org.mybatis.generator.plugins.RowBoundsPlugin 生成的 Mapper 使用多了一个参数RowBounds 来达到分页效果。但是,实际上该分页功能没有使用到MySQL查询的limit关键字(可以由生成的Mapper.xml文件看出),所以对于大表分页查询,实际上会查询出全表再做分页,这在表数据量比较大的场景下,是不允许的。因此,我们需要定制开发出带有limit 关键字的分页查询。

定制插件的开发文档

根据开发文档,可以完成实现。在本文章的基础上,现仅需完成4步小改动,即可生成带有定制插件的文件,详见:https://github.com/nextbin/nbj-mybatis-generator-plugins

  1. 安装依赖(暂时还没有发布到公共maven仓库,需要手动安装)

    git clone https://github.com/nextbin/nbj-mybatis-generator-plugins.git
    git checkout v0.0.1
    mvn clean install
    
  2. 修改 pom.xml,新增 build.plugins.plugin 配置插件 org.mybatis.generator:mybatis-generator-maven-plugin 的插件依赖 github.nextbin.maven:nbj-mybatis-generator-plugins。


    新增generator依赖 @ pom.xml
  3. 新增 src/main/resources/mybatis/generatorConfig.xml,如已配置,则需新增拓展插件。


    新增拓展定制插件 @ generatorConfig.xml
  4. 在IDEA侧边栏执行 generate 操作
    生成文件:在Maven工具栏,执行generate,或者命令行 mvn mybatis-generator:generate

更多内容:

https://github.com/nextbin/nbj-mybatis-generator-plugins

参考资料:

https://mybatis.org/generator/

你可能感兴趣的:(Java MyBatis生成文件的拓展插件(分页、重命名WithBlobs))