MyBatis-详细映射器配置参考

本文详细解析了MyBatis框架中Mapper文件的结构与标签使用,包括缓存、结果映射、参数映射等核心功能,以及增删改查标签的属性与用法,帮助开发者深入了解MyBatis的配置机制。

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
      是否使用数据库内部生成的主键
      • 内部使用JDBCgetGeneratedKeys方法来获取
      • 默认值是false
      • 只针对insertupdate语句有效
      • 一般配合keyPropertykeyColumn使用
  • 执行参数配置
    • parameterMap
      参数映射
      • 目前已废弃,不建议使用
    • parameterType
      标明参数类型
      • 可以是完全限定名也可以是别名
      • 可省略设置,容器会根据TypeHandler进行判断
  • 返回结果配置
    • resultMap
      返回结果类型映射
      • ibatis中功能最为强大的结果映射标签,使用率较高
      • 属性值即是外部标签resultMap规定的id
      • resultTyperesultMap不能同时使用
    • resultType
      标明返回结果类型
      • 可以是完全限定名,也可以是别名
      • 需要考虑返回结果类型有集合的情况
      • resultTyperesultMap属性不能同时使用
    • resultSetType
      针对JDBCResultSet接口而言
      • 候选值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文件的命名空间值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值