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插件
<project ...>
...
<build>
...
<plugins>
...
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.4.0</version>
</plugin>
...
</plugins>
...
</build>
...
</project>
生成文件:在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:具体增加依赖形如:
错误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:新增配置文件 @ 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
-
安装依赖(暂时还没有发布到公共maven仓库,需要手动安装)
git clone https://github.com/nextbin/nbj-mybatis-generator-plugins.git git checkout v0.0.1 mvn clean install
-
修改 pom.xml,新增 build.plugins.plugin 配置插件 org.mybatis.generator:mybatis-generator-maven-plugin 的插件依赖 github.nextbin.maven:nbj-mybatis-generator-plugins。
新增generator依赖 @ pom.xml -
新增 src/main/resources/mybatis/generatorConfig.xml,如已配置,则需新增拓展插件。
新增拓展定制插件 @ generatorConfig.xml -
在IDEA侧边栏执行 generate 操作
生成文件:在Maven工具栏,执行generate,或者命令行 mvn mybatis-generator:generate
更多内容:
https://github.com/nextbin/nbj-mybatis-generator-plugins
网友评论