顶级元素
名称 | 说明 |
---|---|
cache | 命名空间的缓存配置 |
cache-ref | 引用其他命名空间的缓存配置 |
resultMap | 自定义映射规则 |
parameterMap | 已废弃 |
sql | 可重用的语句块 |
insert | 插入语句 |
update | 更新语句 |
delete | 删除语句 |
select | 查询语句 |
select
属性 | 说明 |
---|---|
id | 在命名空间中唯一的标识符,可以被用来引用这条语句 |
parameterType | 将会传入这条语句的参数类的完全限定名或别名; 这个属性是可选的,因为 MyBatis 可以通过类型处理器(TypeHandler) 推断出具体传入语句的参数; 默认值为未设置(unset)。 |
parameterMap | 已废弃 |
resultType | 从这条语句中返回的期望类型的类的完全限定名或别名; 注意如果返回的是集合,那应该设置为集合包含的类型,而不是集合本身; 可以使用 resultType 或 resultMap,但不能同时使用。 |
resultMap | 外部 resultMap 的命名引用; 结果集的映射是 MyBatis 最强大的特性,如果你对其理解透彻,许多复杂映射的情形都能迎刃而解; 可以使用 resultMap 或 resultType,但不能同时使用。 |
flushCache | 将其设置为 true 后,只要语句被调用,都会导致本地缓存和二级缓存被清空; 默认值:false。 |
useCache | 将其设置为 true 后,将会导致本条语句的结果被二级缓存缓存起来; 默认值:对 select 元素为 true。 |
timeout | 这个设置是在抛出异常之前,驱动程序等待数据库返回请求结果的秒数; 默认值为未设置(unset)(依赖驱动)。 |
fetchSize | 这是一个给驱动的提示,尝试让驱动程序每次批量返回的结果行数和这个设置值相等。 默认值为未设置(unset)(依赖驱动)。 |
statementType | STATEMENT,PREPARED 或 CALLABLE 中的一个; 这会让 MyBatis 分别使用 Statement,PreparedStatement 或 CallableStatement; 默认值:PREPARED。 |
resultSetType | FORWARD_ONLY,SCROLL_SENSITIVE, SCROLL_INSENSITIVE 或 DEFAULT(等价于 unset) 中的一个; 默认值为 unset (依赖驱动)。 |
databaseId | 如果配置了数据库厂商标识(databaseIdProvider),MyBatis 会加载所有的不带 databaseId 或匹配当前 databaseId 的语句; 如果带或者不带的语句都有,则不带的会被忽略。 |
resultOrdered | 这个设置仅针对嵌套结果 select 语句适用; 如果为 true,就是假设包含了嵌套结果集或是分组,这样的话当返回一个主结果行的时候,就不会发生有对前面结果集的引用的情况; 这就使得在获取嵌套的结果集的时候不至于导致内存不够用; 默认值:false。 |
resultSets | 这个设置仅对多结果集的情况适用; 它将列出语句执行后返回的结果集并给每个结果集一个名称,名称是逗号分隔的 |
insert & update & delete
属性 | 说明 |
---|---|
id | 命名空间中的唯一标识符,可被用来代表这条语句。 |
parameterType | 将要传入语句的参数的完全限定类名或别名; 这个属性是可选的,因为 MyBatis 可以通过类型处理器推断出具体传入语句的参数; 默认值为未设置(unset)。 |
parameterMap | 已废弃 |
flushCache | 将其设置为 true 后,只要语句被调用,都会导致本地缓存和二级缓存被清空; 默认值:true(对于 insert、update 和 delete 语句)。 |
timeout | 这个设置是在抛出异常之前,驱动程序等待数据库返回请求结果的秒数; 默认值为未设置(unset)(依赖驱动)。 |
statementType | STATEMENT,PREPARED 或 CALLABLE 的一个; 这会让 MyBatis 分别使用 Statement,PreparedStatement 或 CallableStatement; 默认值:PREPARED。 |
useGeneratedKeys | (仅对 insert 和 update 有用)这会令 MyBatis 使用 JDBC 的 getGeneratedKeys 方法来取出由数据库内部生成的主键(比如:像 MySQL 和 SQL Server 这样的关系数据库管理系统的自动递增字段); 默认值:false。 |
keyProperty | (仅对 insert 和 update 有用)唯一标记一个属性; MyBatis 会通过 getGeneratedKeys 的返回值或者通过 insert 语句的 selectKey 子元素设置它的键值; 默认值:未设置(unset); 如果希望得到多个生成的列,也可以是逗号分隔的属性名称列表。 |
keyColumn | (仅对 insert 和 update 有用)通过生成的键值设置表中的列名; 这个设置仅在某些数据库(像 PostgreSQL)是必须的; 当主键列不是表中的第一列的时候需要设置; 如果希望使用多个生成的列,也可以设置为逗号分隔的属性名称列表。 |
databaseId | 如果配置了数据库厂商标识(databaseIdProvider),MyBatis 会加载所有的不带 databaseId 或匹配当前 databaseId 的语句; 如果带或者不带的语句都有,则不带的会被忽略。 |
selectKey
属性 | 描述 |
---|---|
keyProperty | selectKey 语句结果应该被设置的目标属性; 如果希望得到多个生成的列,也可以是逗号分隔的属性名称列表。 |
keyColumn | 匹配属性的返回结果集中的列名称; 如果希望得到多个生成的列,也可以是逗号分隔的属性名称列表。 |
resultType | 结果的类型; MyBatis 通常可以推断出来,但是为了更加精确,写上也不会有什么问题; MyBatis 允许将任何简单类型用作主键的类型,包括字符串; 如果希望作用于多个生成的列,则可以使用一个包含期望属性的 Object 或一个 Map。 |
order | 这可以被设置为 BEFORE 或 AFTER; 如果设置为 BEFORE,那么它会首先生成主键; 设置 keyProperty 然后执行插入语句; 如果设置为 AFTER,那么先执行插入语句,然后是 selectKey 中的语句 - 这和 Oracle 数据库的行为相似,在插入语句内部可能有嵌入索引调用。 |
statementType | 与前面相同,MyBatis 支持 STATEMENT,PREPARED 和 CALLABLE 语句的映射类型,分别代表 PreparedStatement 和 CallableStatement 类型。 |
ResultMap
属性 | 说明 |
---|---|
id | 当前命名空间中的一个唯一标识,用于标识一个结果映射。 |
type | 类的完全限定名, 或者一个类型别名(关于内置的类型别名,可以参考上面的表格)。 |
autoMapping | 如果设置这个属性,MyBatis将会为本结果映射开启或者关闭自动映射; 这个属性会覆盖全局的属性 autoMappingBehavior; 默认值:未设置(unset)。 |
id & result
属性 | 说明 |
---|---|
property | 映射到列结果的字段或属性; 如果用来匹配的 JavaBean 存在给定名字的属性,那么它将会被使用; 否则 MyBatis 将会寻找给定名称的字段; 无论是哪一种情形,你都可以使用通常的点式分隔形式进行复杂属性导航; 比如,你可以这样映射一些简单的东西:“username”,或者映射到一些复杂的东西上:“address.street.number”。 |
column | 数据库中的列名,或者是列的别名; 一般情况下,这和传递给 resultSet.getString(columnName) 方法的参数一样。 |
javaType | 一个 Java 类的完全限定名,或一个类型别名(关于内置的类型别名,可以参考上面的表格); 如果你映射到一个 JavaBean,MyBatis 通常可以推断类型; 然而,如果你映射到的是 HashMap,那么你应该明确地指定 javaType 来保证行为与期望的相一致。 |
jdbcType | JDBC 类型,所支持的 JDBC 类型参见这个表格之后的“支持的 JDBC 类型”; 只需要在可能执行插入、更新和删除的且允许空值的列上指定 JDBC 类型; 这是 JDBC 的要求而非 MyBatis 的要求; 如果你直接面向 JDBC 编程,你需要对可能存在空值的列指定这个类型。 |
typeHandler | 使用这个属性,你可以覆盖默认的类型处理器; 这个属性值是一个类型处理器实现类的完全限定名,或者是类型别名。 |