
MyBatis Generator 是个不错的工具,能方便的从数据库表逆向生成 Java 实体类以及 Mapper 文件。
通常项目中使用插件的方式调用 MyBatis Generator,常用的开发工具(Eclipse、IDEA)下都有对应的插件。当然 MyBatis Generator 还有不依赖开发环境的 maven 插件可用,而本文主要讲的是使用代码方式调用 MyBatis Generator。
为什么要使用代码方式?
主要有以下两方面的原因:
由于项目的开发工具不统一,有些同事习惯使用老的 Eclipse,有些同事喜欢流行的 IDEA。而当使用插件生成代码时,MyBatis Generator 在不同 IDE 下的配置文件
mybatis-generator.xml
在配置方面有些不一样,要搞两份配置,比较麻烦。MyBatis Generator 默认生成的代码注释不合我们项目需求,特别是一大段英文注释,着实让我们项目开发同事接受不了,但完全关闭注释又不行,毕竟开发还是希望至少能显示字段名称和注释的。
于是我们写了一个自定义的
CommentGenerator
,但是这个自定义的CommentGenerator
保存在项目代码里,如果要使用 maven 插件的话,需要修改 MyBatis Generator 的源码包,也很麻烦。
基于此,我们使用在项目代码里增加一个工具类,通过 Java 代码的方式调用 MyBatis Generator。
配置操作步骤
1,加入相关依赖:
1 | <dependency> |
2,创建工具类:
1 | public class MybatisGeneratorStarter { |
具体代码写法,亦可参考官方文档:http://mybatis.org/generator/running/running.html。
3,执行该 main 方法,查看生成效果。
执行遇到报错:nested exception is java.net.UnknownHostException: mybatis.org
在开发机器没有网的情况下,执行上述 main 方法,可能会报错:nested exception is java.net.UnknownHostException: mybatis.org
。
这是由于 mybatis-generator.xml
文件配置的问题。默认情况下,XML 的 DTD 文件配置的是一个网址,如:
1 | <?xml version="1.0" encoding="UTF-8" ?> |
因此 MyBatis Generator 会试图去网上拉 http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd
文件,网络不通自然就异常了。
解决办法就是对 XML 配置使用本地 DTD 文件。具体步骤如下:
找到上述 mybatis-generator-core-1.3.6.jar 依赖包,在包的
org\mybatis\generator\config\xml\
目录下,可以看到 mybatis-generator-config_1_0.dtd 文件,把该文件拷贝到项目的 resources 目录里。修改
mybatis-generator.xml
文件使用本地 DTD/mybatis-generator-config_1_0.dtd
:1
2
3
4
5
6
7<?xml version="1.0" encoding="UTF-8" ?>
<!-- MyBatis Generator 配置文件 -->
<generatorConfiguration>
...
</generatorConfiguration>
这样就使用本地 classPath 下的 DTD 定义,不会再去网上下载。