SQL映射文件

MyBatis Generator (MBG)生成SQL映射文件遵循MyBatis或iBATIS SQL Map DTD规范. 在表的基础上这些文件还包含了不同的标签和属性配置. MBG按照配置表生成SQL映射文件.表名就是SQL映射文件的命名空间(前提是数据库支持schema和catalog,主流数据库对schema和catalog都支持).MBG不会自动把 SQL映射文件到MyBatis/iBATIS配置文件中 - 您必须手动把xxxMapper.xml文件加入到配置文件中(或者您使用一个插件使MBG生成配置文件;Spring配置文件可以实现自动扫描xxxMapper.xml和接口).

每个自动生成的XML方法标签下都包含@mbggenerated的注释块.在运行的时候@mbggenerated注释块将删除和替换.其他部分内容将保持不变. 考虑到这点,不用担心在运行时丢失您新增内容--不包括@mbggenerated块内容.

以下部分描述了将要生成的元素.

注意:下面描述中"BLOB"指任何列的BLOB数据类型包括BLOB, CLOB, LONGVARCHAR, 和 LONGVARBINARY.

结果集

结果集用于数据库表列映射Java对象的属性. 结果集(和相应的查询语句)不包括如下情况:

  • 任何列配置<ignoreColumn>属性将被会被忽略
  • 任何BLOB字段(详见有关BLOBs字段相关映射)

对于列配置<columnOverride>属性将映射成配置的名称.没有配置使用的是默认的属性和JDBC类型.

对于自定义连接查询结果集继承一个结果集是一种非常常见的用法. 对于其他连接查询也想使用该结果集在MBG自动生成的时候需要配置前缀.详见<table>属性alias配置前缀,这样做法可以区分表中相同字段.

如果table配置enableSelectByExample、enableSelectByPrimaryKey属性为true,MBG会生成结果集,table默认这两个配置都是true,所以大部分情况下都会生成resultMap.

BLOB结果集

表中存在BLOB字段时MBG会自动生成一个BLOB结果集,BLOB结果集继承了除BLOB字段外的基础结果集. 我们提供不同的版本查询语句,来适应查询结果中是否需要BLOB字段.

BLOB结果集(和相应的查询语句)不包括如下情况:

  • 任何列配置&lt;ignoreColumn&gt;属性将被会被忽略

对于列配置&lt;columnOverride&gt;属性将映射成配置的名称.没有配置使用的是默认的属性和JDBC类型.

对于自定义连接查询结果集继承一个结果集是一种非常常见的用法.对于其他连接查询也想使用该结果集,在MBG自动生成的时候需要配置前缀.详见<table> 性alias配置前缀,这样做法可以区分表中相同字段.

如果table存在BLOB字段且配置了enableSelectByExample、enableSelectByPrimaryKey属性,MBG会生成BLOB结果集,table默认这两个配置都是true所以大部分情况下都会生成resultMap.

Where条件SQL语句

"by example"方法重用Where条件.被重用的Where条件不包括BLOB字段.大部分表WHERE条件都不支持BLOB字段.

"by example"语句被配置将动态生成Where条件语句.

根据主键查询

select语句按照主键查询返回一行数据.如果表中存在BLOB字段,查询结果中会包含该字段.

如果table配置了enableSelectByExample、enableSelectByPrimaryKey属性为true,MBG会生成结果集,table默认这两个配置都是true所以大部分情况下都会生成resultMap.

根据条件查询

根据条件查询结果集和自动生成对象相匹配. 通过实现一个简单的"query by example"方法可以适用于不同的数据库查询.就算表中存在BLOB字段该查询结果集也不会返回该BLOB字段 (具体返回BLOB字段详见根据条件查询包含BLOB字段结果集部分描述).

重要:条件为空或者没有设置条件时,会将表中所有数据查询出来.

如果table配置了enableSelectByExample属性为true,MBG会生成Example查询.

根据条件查询包含BLOB字段(方法:selectByExampleWithBLOBs)

Example查询结果集和自动生成对象相匹配. 通过实现一个简单的"query by example"方法可以适用于不同的数据库查询.算表中存在BLOB字段该查询结果集将返回该BLOB字段.

重要: 查询条件为空或者没有设置查询条件时,会将表中所有数据查询出来.

如果table配置了enableSelectByExample属性为true,MBG会生成包含BLOB字段的Example查询.

插入

该方法可以插入表中所有字段(包括BLOB字段),但列配置了&lt;ignoreColumn&gt;属性将不会插入.

如果表有主键自动增长(自动增长列或序列),table子元素配置&lt;generatedKey&gt;属性,MBG会生成&lt;selectKey&gt;块语句,一般情况下都不需要配置使用数据库自动增长即可,除非表字段需要使用序列.

重要提示:与iBATIS2和MyBatis3插入的差异.差异如下: