mapper文件标签元素概览
常用一级二级标签概览
<mapper>
<cache /> 缓存
<cache-ref /> 缓存引用
<resultMap /> 结果映射
<parameterMap /> 参数映射
<sql /> 可重用sql语句
<insert /> 映射插入语句
<update /> 映射更新语句
<delete /> 映射删除语句
<select /> 映射查询语句
</mapper>
mybatis.org/dtd/mybatis-3-mapper.dtd参考文档部分截取
<!ELEMENT mapper (cache-ref | cache | resultMap* | parameterMap* | sql* | insert* | update* | delete* | select* )+>
<!ATTLIST mapper
namespace CDATA #IMPLIED
>
增删改查标签介绍参考
DTD文档中的参考
- select标签可选的属性参考
<!ELEMENT select (#PCDATA | include | trim | where | set | foreach | choose | if | bind)*> <!ATTLIST select id CDATA #REQUIRED parameterMap CDATA #IMPLIED parameterType CDATA #IMPLIED resultMap CDATA #IMPLIED resultType CDATA #IMPLIED resultSetType (FORWARD_ONLY | SCROLL_INSENSITIVE | SCROLL_SENSITIVE | DEFAULT) #IMPLIED statementType (STATEMENT|PREPARED|CALLABLE) #IMPLIED fetchSize CDATA #IMPLIED timeout CDATA #IMPLIED flushCache (true|false) #IMPLIED useCache (true|false) #IMPLIED databaseId CDATA #IMPLIED lang CDATA #IMPLIED resultOrdered (true|false) #IMPLIED resultSets CDATA #IMPLIED > - insert标签可选的属性参考
<!ELEMENT insert (#PCDATA | selectKey | include | trim | where | set | foreach | choose | if | bind)*> <!ATTLIST insert id CDATA #REQUIRED parameterMap CDATA #IMPLIED parameterType CDATA #IMPLIED timeout CDATA #IMPLIED flushCache (true|false) #IMPLIED statementType (STATEMENT|PREPARED|CALLABLE) #IMPLIED keyProperty CDATA #IMPLIED useGeneratedKeys (true|false) #IMPLIED keyColumn CDATA #IMPLIED databaseId CDATA #IMPLIED lang CDATA #IMPLIED > - update标签可选的属性参考
<!ELEMENT update (#PCDATA | selectKey | include | trim | where | set | foreach | choose | if | bind)*> <!ATTLIST update id CDATA #REQUIRED parameterMap CDATA #IMPLIED parameterType CDATA #IMPLIED timeout CDATA #IMPLIED flushCache (true|false) #IMPLIED statementType (STATEMENT|PREPARED|CALLABLE) #IMPLIED keyProperty CDATA #IMPLIED useGeneratedKeys (true|false) #IMPLIED keyColumn CDATA #IMPLIED databaseId CDATA #IMPLIED lang CDATA #IMPLIED > - delete标签可选属性参考
<!ELEMENT delete (#PCDATA | include | trim | where | set | foreach | choose | if | bind)*> <!ATTLIST delete id CDATA #REQUIRED parameterMap CDATA #IMPLIED parameterType CDATA #IMPLIED timeout CDATA #IMPLIED flushCache (true|false) #IMPLIED statementType (STATEMENT|PREPARED|CALLABLE) #IMPLIED databaseId CDATA #IMPLIED lang CDATA #IMPLIED >
增删改查中可选属性整合介绍参考
- 全局id
id
全局唯一标识符- 全局的含义,即在
mapper文件的配置范围中.
- 全局的含义,即在
- 主键配置
keyProperty
指定POJO中哪个属性是主键- 不能和标签属性
keyColumn同时使用
- 不能和标签属性
keyColumn
指定映射表中那个列作为主键- 不能和
keyProperty同时使用 - 只接受整型参数
- 不能和
useGeneratedKeys
是否使用数据库内部生成的主键- 内部使用
JDBC的getGeneratedKeys方法来获取 - 默认值是
false - 只针对
insert和update语句有效 - 一般配合
keyProperty或keyColumn使用
- 内部使用
- 执行参数配置
parameterMap
参数映射- 目前已废弃,不建议使用
parameterType
标明参数类型- 可以是
完全限定名也可以是别名 - 可省略设置,容器会根据
TypeHandler进行判断
- 可以是
- 返回结果配置
resultMap
返回结果类型映射- ibatis中功能最为强大的结果映射标签,
使用率较高 属性值即是外部标签resultMap规定的id值resultType和resultMap不能同时使用
- ibatis中功能最为强大的结果映射标签,
resultType
标明返回结果类型- 可以是
完全限定名,也可以是别名 - 需要考虑返回结果类型有
集合的情况 resultType和resultMap属性不能同时使用
- 可以是
resultSetType
针对JDBC的ResultSet接口而言- 候选值
FORWARD_ONLY,SCROLL_SENSITIVE,SCROLL_INSENSITIVE - 默认值
unset - 实际场景,是由具体的数据库驱动厂商提供的
- 仅作了解
- 候选值
resultSets
是否列出多结果集的名称- 主要针对的是
多结果集的情况 - 若设置为
true,则使用逗号分割列出多个结果集 - 默认值设置为
false
- 主要针对的是
resultOrdered
是否处理嵌套结果集- 针对的
select语句 - 默认值是
false
- 针对的
fetchSize
设置返回结果集的行数- 仅是尝试操作设置
- 真实效用,依赖不同的驱动性能
- 缓存配置
flushCache
清空本地的所有缓存- 包含
一级缓存和二级缓存 - 默认值为
false
- 包含
useCache
是否使用二级缓存- 针对的是
sql语句的执行结果 - 在
select标签中,默认设置为true
- 针对的是
- 其他选项配置
timeout
等待返回执行结果的时间- 具体情况效用,依赖具体的驱动
- 默认值是
unset
statementType
指定使用JBDC的哪个Statement执行sql语句- 属性候选值有
STATEMENT,PREPARED,CALLABLE - 对应的类对象是
Statement,PreparedStatement,CallableStatement - 默认值是
PREPARED
- 属性候选值有
databaseId
与全局配置中标签databaseIdProvider呼应- 单个数据库场景不建议配置使用
lang
自定义语言- 可使用第三方语言
- 使用率较少,一般不推荐使用
其他标签介绍参考
sql标签参考
sql标签的效用
定义可重用的sql语句- 可以在任意地方引用
- 可以是部分
sql语句,也可以是全部 - 减少映射配置的工作量,和代码的冗余度
DTD文档中sql规定参考<!ELEMENT sql (#PCDATA | include | trim | where | set | foreach | choose | if | bind)*> <!ATTLIST sql id CDATA #REQUIRED lang CDATA #IMPLIED databaseId CDATA #IMPLIED >sql标签部分说明- 可选属性参考
id
全局唯一标识id- 所谓的全局,针对的是
mapper文件的作用范围
- 所谓的全局,针对的是
lang
自定义语言- 可使用第三方语言
- 使用率较少,一般不推荐使用
databaseId
与全局配置中标签databaseIdProvider呼应- 单个数据库场景不建议配置使用
- 可选属性参考
parameterMap标签参考
此标签已废弃,将来可能会被移除,不建议使用和了解.
resultMap标签参考
resultMap标签说明- ibatis中功能最为强大的标签
- 可以处理任意复杂的
返回结果映射 - 可轻松处理
一对多,多对一,多对多复杂结果映射 - 是ibatis中
半自动化ORM最为核心的功能体现
DTD文档中resultMap规定参考<!ELEMENT resultMap (constructor?,id*,result*,association*,collection*, discriminator?)> <!ATTLIST resultMap id CDATA #REQUIRED type CDATA #REQUIRED extends CDATA #IMPLIED autoMapping (true|false) #IMPLIED >resultMap标签部分说明- 可选属性参考
id
全局唯一标识id- 主要为了标识区别
resultMap
- 主要为了标识区别
type
指定返回结果的映射包装类型- 可以是
完全限定名,也可以是别名
- 可以是
extend
此结果映射继承全局存在的其他结果映射配置autowiredMapping
是否开启自动映射- 表示
ibatis会覆盖全局配置属性autoMappingBehavior - 效用主要是针对此标签的
resultMap - 默认值为
unset
- 表示
- 可选子标签参考
constructor
用来手动配置构造方法,来实例化一个POJO类对象- 应用场景为,映射结果的
POJO类对象不存在无参的构造器
- 应用场景为,映射结果的
id
用来标记映射结果中的主键,配对属性和列名result
用来标记映射结果中非主键,配对属性和列名association
处理一对一级联关系映射collection
处理一对多级联关系映射discriminator
鉴别器- 决定返回结果使用哪个
resultMap
- 决定返回结果使用哪个
- 可选属性参考
cache标签参考
DTD文档中规定参考<!ELEMENT cache (property*)> <!ATTLIST cache type CDATA #IMPLIED eviction CDATA #IMPLIED flushInterval CDATA #IMPLIED size CDATA #IMPLIED readOnly CDATA #IMPLIED blocking CDATA #IMPLIED >cache标签部分说明- 可选属性参考
type
指定自定义缓存配置的类对象的完全限定名eviction:英 /ɪ'vɪkʃ(ə)n/
配置缓存收回策略
默认值是LRU
候选收回策略有:LRU: 最近最少使用的:移除最长时间不被使用的对象FIFO: 先进先出:按对象进入缓存的顺序来移除它们SOFT: 软引用:移除基于垃圾回收器状态和软引用规则的对象WEAK: 弱引用:更积极地移除基于垃圾收集器状态和弱引用规则的对象
flushInterval
定期刷新缓存的时间- 默认是不设置的
- 设置的单位是
毫秒/ms - 合法的属性值是任意正整数
size
缓存中,设置引用对象的数目- 注意应用内存中可存储的资源对象数目,设置值不应大于其值
- 默认值是
1024
readOnly
设置缓存是否只读- 默认值是
false
- 默认值是
- 可选属性参考
cache-ref标签参考
cache-ref标签说明
引用其他mapper文件中的缓存配置DTD文档中规定参考<!ELEMENT cache-ref EMPTY> <!ATTLIST cache-ref namespace CDATA #REQUIRED >- 可选属性参考
namespace
其他mapper文件的命名空间值
本文详细解析了MyBatis框架中Mapper文件的结构与标签使用,包括缓存、结果映射、参数映射等核心功能,以及增删改查标签的属性与用法,帮助开发者深入了解MyBatis的配置机制。
951

被折叠的 条评论
为什么被折叠?



