【MyBatis源码分析】mappers解析属性配置元素详述

本文深入解析MyBatis的Mapper配置,包括insert、update、delete元素及<select>、resultType、resultMap的配置。通过分析源码,理解mapper文件的namespace、<sql>、<resultMap>等元素的作用,以及如何加载和解析mapper配置。
摘要由CSDN通过智能技术生成

mapper加载

config.xml中两个最重要的标签,一个是<environment>(JDBC环境信息),另一个就是mapper(sql文件映射)了。

Mapper映射文件是一个xml格式文件,必须遵循相应的dtd文件规范,如ibatis-3-mapper.dtd。我们先大体上看看支持哪些配置?如下所示,从Eclipse里截了个屏:


从上图可以看出,映射文件是以<mapper>作为根节点,在根节点中支持9个元素,分别为insert、update、delete、select(增删改查);cache、cache-ref、resultMap、parameterMap、sql。

下文中,我们将首先对增删改进行描述,然后对查进行详细说明,最后对其他五个元素进行简单说明。

(1)insert、update、delete

我们先从配置文件看起:

<!DOCTYPE mapper     
PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"    
"http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">   
  
<!-- mapper 为根元素节点, 一个namespace对应一个dao -->  
<mapper namespace="MailMapper">  
  
    <insert  
      <!-- 1. id (必须配置)  
        id是命名空间中的唯一标识符,可被用来代表这条语句。   
        一个命名空间(namespace) 对应一个dao接口,   
        这个id也应该对应dao里面的某个方法(相当于方法的实现),因此id 应该与方法名一致 -->  
        
      id="addMail"  
        
      <!-- 2. parameterType (可选配置, 默认为mybatis自动选择处理)  
        将要传入语句的参数的完全限定类名或别名, 如果不配置,mybatis会通过ParameterHandler 根据参数类型默认选择合适的typeHandler进行处理  
        parameterType 主要指定参数类型,可以是int, short, long, string等类型,也可以是复杂类型(如对象) -->  
        
      parameterType="mail"  
        
      <!-- 3. flushCache (可选配置,默认配置为true)  
        将其设置为 true,任何时候只要语句被调用,都会导致本地缓存和二级缓存都会被清空,默认值:true(对应插入、更新和删除语句) -->  
        
      flushCache="true"  
        
      <!-- 4. statementType (可选配置,默认配置为PREPARED)  
        STATEMENT,PREPARED 或 CALLABLE 的一个。这会让 MyBatis 分别使用 Statement,PreparedStatement 或 CallableStatement,默认值:PREPARED。 -->  
        
      statementType="PREPARED"  
        
      <!-- 5. keyProperty (可选配置, 默认为unset)  
        (仅对 insert 和 update 有用)唯一标记一个属性,MyBatis 会通过 getGeneratedKeys 的返回值或者通过 insert 语句的 selectKey 子元素设置它的键值,默认:unset。如果希望得到多个生成的列,也可以是逗号分隔的属性名称列表。 -->  
        
      keyProperty=""  
        
      <!-- 6. keyColumn     (可选配置)  
        (仅对 insert 和 update 有用)通过生成的键值设置表中的列名,这个设置仅在某些数据库(像 PostgreSQL)是必须的,当主键列不是表中的第一列的时候需要设置。如果希望得到多个生成的列,也可以是逗号分隔的属性名称列表。 -->  
        
      keyColumn=""  
        
      <!-- 7. useGeneratedKeys (可选配置, 默认为false)  
        (仅对 insert 和 update 有用)这会令 MyBatis 使用 JDBC 的 getGeneratedKeys 方法来取出由数据库内部生成的主键(比如:像 MySQL 和 SQL Server 这样的关系数据库管理系统的自动递增字段),默认值:false。  -->  
        
      useGeneratedKeys="false"  
        
      <!-- 8. timeout  (可选配置, 默认为unset, 依赖驱动)  
        这个设置是在抛出异常之前,驱动程序等待数据库返回请求结果的秒数。默认值为 unset(依赖驱动)。 -->  
      timeout="20">  
  
    <update  
      id="updateMail"  
      parameterType="user"  
      flushCache="true"  
      statementType="PREPARED"  
      timeout="20">  
  
    <delete  
      id="deleteMail"
      parameterType="user"  
      flushCache="true"  
      statementType="PREPARED"  
      timeout="20">  
</mapper>
上面给出了一个比较全面的配置说明,但是在实际使用过程中并不需要都进行配置,可根据自己的需要删除部分配置项。
这里的parameterTy
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值