> 文章列表 > mybatis-generator生成器配置-笔记

mybatis-generator生成器配置-笔记

大家好,今天咱们聊聊MyBatis Generator(简称MBG)的配置问题。其实啊,MBG就像是个“代码生成工厂”,帮你从数据库中自动生成Java代码和MyBatis的XML映射文件,省去了手写代码的麻烦。不过呢,这工厂虽然自动化,但配置起来还是有点讲究的。

首先,咱们得知道MBG的配置文件长啥样。你看,那堆XML标签,像generatorConfiguration、context、property等等,简直就像是在玩“找不同”游戏!每个标签都有它的作用,比如classPathEntry指定了JDBC驱动的路径,context则定义了生成代码的环境。说真的,一开始看到这些,感觉像是在解谜,但一旦搞懂,那真是茅塞顿开。

那么问题来了,为啥要搞这么复杂呢?其实啊,MBG的灵活性就体现在这些配置里。你可以根据不同的数据库、不同的开发需求,定制生成的代码风格。比如,你可以选择生成flat模式的Java对象,所有字段都放在一个类里;也可以选择hierarchical模式,把主键、BLOB字段分别生成独立的类。这就好比“自助餐”,想吃什么自己选,但前提是你得知道菜单上的每道菜是啥。

再说说插件,像是ToStringPlugin、EqualsHashCodePlugin,它们就像是“调料包”,给生成的代码加点额外的味道。比如,EqualsHashCodePlugin会自动生成equals和hashCode方法,省得你手动写。不过呢,有些插件你可能用不上,那就可以不“加调料”,保持原味。

最后,别忘了编码问题。MBG默认生成的Java文件编码是UTF-8,这是为了保证代码的可移植性,毕竟现在谁还用ISO-8859-1呢?不过,如果你非得用GBK,那也得提前告诉MBG,不然生成的代码可就乱码了。

总之啊,MBG的配置就像是在“调参数”,调得好,生成的代码又漂亮又实用;调得不好,那代码可能就“面目全非”了。所以,建议大家在用MBG之前,先好好研究一下配置文件,别急着“动手”。毕竟,磨刀不误砍柴工嘛!

mybatis-generator生成器配置-笔记

github上的mybatis-generator项目issues(501)发现一份别人公开的比较详细的配置说明,记个笔记方便查看
Issue #501

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfigurationPUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN""http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"><!-- 配置生成器 -->
<generatorConfiguration><!-- 在MBG工作的时候,需要额外加载的依赖包location属性指明加载jar/zip包的全路径--><classPathEntry location="${mybatis.generator.jdbcDriver.path}"/><!--context:生成一组对象的环境id:必选,上下文id,用于在生成错误时提示defaultModelType:指定生成对象的样式1,conditional:类似hierarchical;2,flat:所有内容(主键,blob)等全部生成在一个对象中;3,hierarchical:主键生成一个XXKey对象(key class),Blob等单独生成一个对象,其他简单属性在一个对象中(record class)targetRuntime:1,MyBatis3:默认的值,生成基于MyBatis3.x以上版本的内容,包括XXXBySample;2,MyBatis3Simple:类似MyBatis3,只是不生成XXXBySample;introspectedColumnImpl:类全限定名,用于扩展MBG--><context id="MyBatis" targetRuntime="MyBatis3"><!-- 自动识别数据库关键字,默认false,如果设置为true,根据SqlReservedWords中定义的关键字列表;一般保留默认值,遇到数据库关键字(Java关键字),使用columnOverride覆盖--><property name="autoDelimitKeywords" value="false"/><!-- 生成的Java文件的编码 --><property name="javaFileEncoding" value="UTF-8"/><!-- 格式化java代码 --><property name="javaFormatter" value="org.mybatis.generator.api.dom.DefaultJavaFormatter"/><!-- 格式化XML代码 --><property name="xmlFormatter" value="org.mybatis.generator.api.dom.DefaultXmlFormatter"/><plugin type="org.mybatis.generator.plugins.CaseInsensitiveLikePlugin"></plugin><plugin type="org.mybatis.generator.plugins.SerializablePlugin"></plugin><plugin type="org.mybatis.generator.plugins.ToStringPlugin"></plugin><plugin type="org.mybatis.generator.plugins.EqualsHashCodePlugin"></plugin><!-- 不生成注释 --><commentGenerator>
<!-- <property name="suppressAllComments" value="true"/>--><property name="suppressDate" value="true"/></commentGenerator><!-- beginningDelimiter和endingDelimiter:指明数据库的用于标记数据库对象名的符号,比如ORACLE就是双引号&