深入浅出Mybatis-XML映射器

Mybatis的真正强大在于它的语句映射,这是它的魔力所在;

1.select

查询语句标签

<select id="selectPerson" parameterType="int" resultType="hashmap">
  SELECT * FROM PERSON WHERE ID = #{id}
</select>

select元素属性

属性 描述
id 命名空间唯一标识符
parameterType 参数的类全限定名或别名,通过类型处理器解析。默认值为未设置(unset)
resultType 返回结果的类全限定名或别名。如果返回的是集合,设置为集合包含的类型
resultMap 对外部resultMap的命名引用
flushCache 设置为true后,语句被调用,会导致本地缓存和二级缓存清空,默认值:false
useCache 设置为true后,会将语句的结果被二级缓存缓存起来,默认值:对select元素为true
timeout 在抛出异常之前,驱动程序等待数据库返回结果的秒数。默认值为未设置(unset)(依赖数据库驱动)
fetchSize 让驱动程序每次批量返回的结果等于这个值。默认值为未设置(unset) (依赖驱动)
statementType 可选STATEMENT,PREPARED,CALLABLE
resultSetType FORWARD_ONLY,SCROLL_SENSITIVE, SCROLL_INSENSITIVE 或 DEFAULT(等价于 unset) 中的一个,默认值为 unset (依赖数据库驱动)。
databaseId 如果配置了数据库厂商标识(databaseIdProvider),MyBatis 会加载所有不带 databaseId 或匹配当前 databaseId 的语句;如果带和不带的语句都有,则不带的会被忽略。
resultOrdered 这个设置仅针对嵌套结果 select 语句:如果为 true,将会假设包含了嵌套结果集或是分组,当返回一个主结果行时,就不会产生对前面结果集的引用。 这就使得在获取嵌套结果集的时候不至于内存不够用。默认值:false
resultSet 这个设置仅适用于多结果集的情况。它将列出语句执行后返回的结果集并赋予每个结果集一个名称,多个名称之间以逗号分隔

2.insert,update和delete

属性 描述
id 命名空间唯一标识符
parameterType 参数的类全限定名或类名
parameterMap 用于引用外部parameterMap属性,已废弃
flushCache 设置true,语句调用,清空本地缓存二级缓存
timeout 抛出异常之前,返回请求结果的秒数
statementType 可选STATEMENT,PREPARED或CALLABLE,默认PREPARED
useGeneratedKeys 使用JDBC的getGeneratedKeys取出数据库内部生成的主键,默认值false
keyProperty 指定能够唯一识别对象的属性,使用getGeneratedKeys的返回值或selectKey子元素设置它的值。生成多个,用逗号分割
keyColumn 设置生成键值在表中的列名
databaseId 如果配置了数据库厂商标识(databaseIdProvider),Mybatis会加载所有不带databaseId或匹配当前databaseId的语句。同时存在,忽略不带的

3.SQL

用来定义可重用的SQL代码片段,以便在其他语句中使用;
可以在不同的include元素中定义不同的参数值;

<sql id="userColumns"> ${alias}.id,${alias}.username,${alias}.password </sql>

在其他语句中使用

<select id="selectUsers" resultType="map">
  select
    <include refid="userColumns"><property name="alias" value="t1"/></include>,
    <include refid="userColumns"><property name="alias" value="t2"/></include>
  from some_table t1
    cross join some_table t2
</select>

也可以在include元素中的refid属性或内部语句中使用属性值

<!-- 逐层嵌套 -->
<sql id="sometable">
  ${prefix}Table
</sql>

<sql id="someinclude">
  from
    <include refid="${include_target}"/>
</sql>

<select id="select" resultType="map">
  select
    field1, field2, field3
  <include refid&
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值