<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//
EN" "http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">
<mapper>
<select id="" parameterMap="" parameterType="" resultMap=""
resultType="" useCache="true" flushCache="true" timeout="" fetchSize=""
statementType="STATEMENT" resultSetType="FORWARD_ONLY">
<!--
statementType可以设置为STATEMENT,PREPARED,CALLABLE,
默认为PREPARED,像在调用存储过程时就可以使用CALLABLE类型
resultSetType结果集类型,主要是说游标,具有方向性,可以去
FORWARD_ONLY、SCROLL_SENSITIVE、SCROLL_INSENSITIVE 默认根据数据库驱动而定
-->
</select>
<insert id="" useGeneratedKeys="true" keyProperty=""></insert>
<!--
useGenerateKeys是否使用数据库自动生成的键(如自增列) 默认 false
keyProperty将数据库自动生成的键值赋值给哪一个字段值
-->
<!--ibatis还对不支持自动生成主键值的数据库提供了主键值生成方案,如下是一个随机数主键值:-->
<insert id="insertAuthor" parameterType="domain.blog.Author">
<selectKey keyProperty="id" resultType="int" order="BEFORE">
select
CAST(RANDOM()*1000000 as INTEGER) a from SYSIBM.SYSDUMMY1
</selectKey>
<!--
order可以设置为BEFORE、AFTER。如果是BEFORE,会先select键值,赋值键值然后执行insert语句。
如果是AFTER,那么会先执行insert语句之后再select。默认AFTER
-->
insert into Author
(id, username, password, email,bio,
favourite_section)
values
(#{id}, #{username}, #{password}, #{email},
#{bio},
#{favouriteSection,jdbcType=VARCHAR}
<!--
定义特殊传参类型 #{property,javaType=int,jdbcType=NUMERIC}
-->
)
</insert>
<!--sql定义重用的sql代码-->
<sql id="userColumns">
id,username,password
</sql>
<select id="selectUsers" parameterType="int" resultType="hashmap">
select
<include refid="userColumns" />
from some_table
where id = #{id}
</select>
<resultMap type="" id="">
<!--constructor属性可以配置通过类构造函数注入属性的一些参数-->
<constructor>
<idArg column="" javaType="" jdbcType="" typeHandler="" />
<arg column="" javaType="" jdbcType="" typeHandler="" />
</constructor>
<!--
id,result均将单个列的值映射到POJO中的单个简单类型属性(如int,double,Date等等)
id映射主键,result映射普通属性
-->
<id column="" javaType="" jdbcType="" property="" typeHandler="" />
<result column="" javaType="" jdbcType="" property=""
typeHandler="" />
<!--association标签定义了实体之间的关联 -->
<association property="">
<id />
<result />
<association property=""></association>
<collection property=""></collection>
<discriminator javaType="">
<case value=""></case>
</discriminator>
</association>
<!--collection类似association对应POJO中的集合属性 ,如List Map -->
<collection property="" ofType=""></collection>
<!--
有时候我们从数据库中得到的值不仅仅对应一种POJO,可能根据参数不同对应不懂的POJO,
如车辆的属性根据卡车、汽车而不同,那么可以使用以下配置
-->
<discriminator javaType="int" column="vehicle_type">
<case value="1" resultMap="carResult" />
<case value="2" resultMap="truckResult" />
<case value="3" resultMap="vanResult" />
<case value="4" resultMap="suvResult" />
</discriminator>
</resultMap>
<!--
cache:配置命名空间内的缓存机制 cache-ref:引用两一个命名空间的缓存配置
缓存过期算法:
LRU 最近最少使用
FIFO 先进先出
SOFT 只有当目前内存不足的情况下,JVM 在垃圾回收时才会收回其包含的引用
WEAK 只要JVM 启动了垃圾回收机制,那么WeakReference 所对应的对象就将被JVM 回收
-->
<cache eviction="" flushInterval="" readOnly="" size="" type=""></cache>
<cache-ref namespace=""/>
</mapper>