关于mybatis:Mybatis中的标签

58次阅读

共计 1656 个字符,预计需要花费 5 分钟才能阅读完成。

官网文档:mybatis 官网

mapper 中的几个顶级元素:

  • cache
  • cache-ref
  • resultMap
  • parameterMap
  • sql
  • insert
  • delete
  • update
  • select

SELECT

<select
id="selectPerson"
parameterType="int"
parameterMap="deprecated"
resultType="hashmap"
resultMap="personResultMap"
flushCache="false"
useCache="true"
timeout="10"
fetchSize="256"
statementType="PREPARED"
resultSetType="FORWARD_ONLY">

注:resultType 与 resultMap 中只能二选一。

resultType 能够是任意包装类型 / 实体类;而 resultMap 更加弱小。

能够先看一篇文章先理解一下:[ResultType 与 ResultMap 区别]
(https://blog.csdn.net/weixin_…


flushCache:调用 sql 后,清空本地缓存和二级缓存,默认值为 false。
useCache:调用后二级缓存存下来,对 select 默认为 true。
statementType: PREPARED|STATEMENT|CALLABLE, 别离对应相应的 statement 类型。

INSERT/DELETE/UPDATE

<insert
id="insertAuthor"
parameterType="domain.blog.Author"
flushCache="true"
statementType="PREPARED"
keyColumn=""useGeneratedKeys=""
keyProperty=""timeout="20">
<update
id="updateAuthor"
parameterType="domain.blog.Author"
flushCache="true"
statementType="PREPARED"
timeout="20">
<delete
id="deleteAuthor"
parameterType="domain.blog.Author"
flushCache="true"
statementType="PREPARED"
timeout="20">

次级元素 (顶级标签下的标签)

  • foreach
<foreach item="item" collection="list" separator=",">
(#{item.username}, #{item.password}, #{item.email}, #{item.bio})
</foreach>
  • selectKey
<selectKey keyProperty="id" resultType="int" order="BEFORE">
select CAST(RANDOM()*1000000 as INTEGER) a from SYSIBM.SYSDUMMY1
</selectKey>
  • sql 定义可重用的代码片段

定义

<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>
  • 动静 sql(if,choose/when/otherwise,trim,where,set,bind)

正文完
 0