SQL映射文件常用元素:
1.select
属性: id 在命名空间内唯一标识
parameterType 将传入该select语句的参数类型的完全限定名或别名
resultType 该条select语句将要返回的类型的完全限定名或别名
resultMap 外部resultMap的命名引用,不可和resultType同时使用
flushCache 设置为true时,则在任何时候只要语句被调用,都会导致本地缓存和二级缓存都被清空,默认为false。
useCache 设置为true时,将会导致本条语句的结果被二级缓存,默认为true
timeout 驱动程序等待数据库返回请求结果的秒数,默认值为unset(依赖驱动)
fetchSize 尝试影响驱动程序每次批量返回的结果行数和这个设置值相等,默认为unset(依赖驱动)
statementType 值为STATEMENT、PREPARED、CALLABLE。默认值为PREPARED
resultSetType 结果集的类型,值为FORWARD_ONLY、SCROLL_SENSITIVE、SCROLL_INSENSITIVE。默认为unset(依赖驱动)
databaseId 如果配置了databaseIdProvider,MyBatis会加载所有不带databaseId或匹配当期databaseId的语句,若带或不带的语句都有,则不带的会被忽略。
resultOrdered
resultSets 仅对多结果集使用,将列出语句执行后返回的结果集并给每个结果集一个名称,名称用逗号分隔。
2.insert、3.update、4.delete
特有属性: useGeneratedKeys 仅对insert和update有用,使MyBatis使用getGeneratedKeys方式获取由数据内部生成的主键,默认为false
keyProperty 仅对insert和update有用,唯一标记一个属性,MyBatis会通过getGeneratedKeys的返回值或者通过insert语句的selectKey子元素设置它的键值,默认unset
keyColumn 仅对insert和update有用,通过生成的键值设置表中的列名
resultType 结果类型
order 可以设置为BEFORE或AFTER。若设置为BEFORE,会首先选择主键,设置keyProperty然后执行插入语句。若设置为AFTER,先执行插入语句,然后是selectKey元素
statementType 值为STATEMENT、PREPARED、CALLABLE,分别对应Statement、PreparedStatement、CallableStatement。默认值为PREPARED
5.sql 可被其它语句引用的可重用语句块
例如:<sql id="userColumns">${alias}.id</sql>语句可以包含到下面语句中:
<select id="selectUsers" resultType="map">
select <include refid="userColumns"><property name="alias" value="t1"/></include>
from some_table t1
</select>
6.cache 给定命名空间的缓存配置
7.cache-ref 其它命名空间缓存配置的引用
1.select
属性: id 在命名空间内唯一标识
parameterType 将传入该select语句的参数类型的完全限定名或别名
resultType 该条select语句将要返回的类型的完全限定名或别名
resultMap 外部resultMap的命名引用,不可和resultType同时使用
flushCache 设置为true时,则在任何时候只要语句被调用,都会导致本地缓存和二级缓存都被清空,默认为false。
useCache 设置为true时,将会导致本条语句的结果被二级缓存,默认为true
timeout 驱动程序等待数据库返回请求结果的秒数,默认值为unset(依赖驱动)
fetchSize 尝试影响驱动程序每次批量返回的结果行数和这个设置值相等,默认为unset(依赖驱动)
statementType 值为STATEMENT、PREPARED、CALLABLE。默认值为PREPARED
resultSetType 结果集的类型,值为FORWARD_ONLY、SCROLL_SENSITIVE、SCROLL_INSENSITIVE。默认为unset(依赖驱动)
databaseId 如果配置了databaseIdProvider,MyBatis会加载所有不带databaseId或匹配当期databaseId的语句,若带或不带的语句都有,则不带的会被忽略。
resultOrdered
resultSets 仅对多结果集使用,将列出语句执行后返回的结果集并给每个结果集一个名称,名称用逗号分隔。
2.insert、3.update、4.delete
特有属性: useGeneratedKeys 仅对insert和update有用,使MyBatis使用getGeneratedKeys方式获取由数据内部生成的主键,默认为false
keyProperty 仅对insert和update有用,唯一标记一个属性,MyBatis会通过getGeneratedKeys的返回值或者通过insert语句的selectKey子元素设置它的键值,默认unset
keyColumn 仅对insert和update有用,通过生成的键值设置表中的列名
resultType 结果类型
order 可以设置为BEFORE或AFTER。若设置为BEFORE,会首先选择主键,设置keyProperty然后执行插入语句。若设置为AFTER,先执行插入语句,然后是selectKey元素
statementType 值为STATEMENT、PREPARED、CALLABLE,分别对应Statement、PreparedStatement、CallableStatement。默认值为PREPARED
5.sql 可被其它语句引用的可重用语句块
例如:<sql id="userColumns">${alias}.id</sql>语句可以包含到下面语句中:
<select id="selectUsers" resultType="map">
select <include refid="userColumns"><property name="alias" value="t1"/></include>
from some_table t1
</select>
6.cache 给定命名空间的缓存配置
7.cache-ref 其它命名空间缓存配置的引用
8.resultMap 用来描述如何从数据库结果集中加载对象