Mapper.xml配置详解
一、mapper
配置文件的根文件
<mapper namespace="daoname">
</mapper>
1.namespace-----将dao接口与此配置文件连接
二、resultMap
当实体类属性与表中的列名不一致时,将它们一一映射。
<!--
1.type(对应结果集的Java类型)
2.id(此命名空间中唯一标示 该结果集类型)
-->
<resultMap type="" id="">
<!--id标签对应主键属性和列
1.property(实体表中属性名)
2.column(数据库表的列名)
3.javaType(属性的Java类型,可以不配置)
-->
<id property="" cloumn="" javaType="" />
<!--result标签对应普通属性和列
-->
<result property="" cloumn="" javaType="" />
<!--constructor标签对应实体类中的构造方法
1.idArg(id参数)
2.arg(普通参数)
-->
<constructor>
<idArg cloumn="" />
<arg column="" />
</constructor>
<!--collection标签 用以一对多关系
1.javaType(容器类型)
2.ofType(容器内的数据类型)
3.resultMap(容器内实体类型属性名与表列名不一致时,若不配置此标签,则在标签中自己配置id,result)
-->
<collection property="" column="" javaType="" ofType="" resultMap="">
<id />
<result />
</collection>
<!--association 用以配置多对一
用法与collection相似
-->
<association property="" column="" javaType="" resultMap="">
</association>
</resultMap>
三、select
<!--
1.id( 必须配置,唯一标示此命名空间的select。
2.parameterType( 可选配置,不配置将通过ParameterHandler自动识别类型。
3.statementType( 可选配置,PREPARED|STATEMENT|CALLABLE,默认为PREPARED.SQL类型。
4.resultMap( 与resultSet( 二选一结果集封装类型。
5.useCache( 可选配置,是否使用二级缓存。true|false,默认为false。
6.flushCache( 可选配置,调用此语句,清空本地缓存和二级缓存。true|false,默认为true。
7.timeout( 抛出异常时,驱动等待数据库返回数据的秒数。默认为unset,依赖于驱动。
8.resultSetType( 可选配置,结果集类型 FORWARD_ONLY|SCROLL_SENSITIVE|SCROLL_INSENSITIVE。默认值为unset,依赖驱动。
9.fetchSize( 可选配置,这是尝试影响驱动程序每次批量返回的结果行数和这个设置值相等。默认值为unset依赖驱动。
-->
<select id="" parameterType="" statementType="PREPARED" resultMap=""或resultSet="" useCache="false" flushCache="true" tiemout="unset" resultSetType="" fetchSize="">
select from table where
</select>
四、insert、update、delete
<!--
1.useGeneratedKeys( 是否使用数据库自增.true|false,默认为false。
2.keyProperty( 将数据插入的数据库后,查询该属性的值,赋值到参数对象的该属性上。
3.keyColumn( 将数据插入的数据库后,查询该列的值,赋值到参数对象的该属性上。
-->
<insert id="" parameterType="" statementType="PERPARED" timeout="unset" flushCache="true" useGeneratedKeys="false" keyProperty="unset" keyColumn="unset">
insert into table(*) values()
</insert>
<update id="" parameterType="" statementType="PREPARED" tiemout="unset" flushCache="true" useGeneratedKeys="false" keyProperty="unset" keyColumn="unset">
update table set ... where
</update>
<delete id="" parameterType="" statementType="PREPARED" tiemout="unset" flushCache="true">
delete from table where
</delete>
五、动态sql
<!--
where标签,当其后紧跟and或or时,可以将and或or去掉。
对应的SQL语句段 ....where ... and|or ....
-->
<where>
<if test="">
</if>
</where>
<!--
where标签与set标签是trim标签的实现。
一下写法等价于where标签
-->
<trim prefix="where" prefixOverrides="AND |OR ">
.......
</trim>
<!--
set标签,当其最后语句为","时,可以将多余的","去掉。
对应SQL语句段 .... set ...,...,...
-->
<set>
<if test="">
</if>
</set>
==
<trim prefix="SET" suffixOverrides=",">
</trim>
<!--
froeach标签,用于处理集合参数的拼接。
-->
<foreach item="item" index="index" collection="list"
open="(" separator="," close=")">
#{item}
</foreach>
<!--
choose标签,用于处理多项选择的拼接。
-->
<choose>
<when test="">
</when>
<when test="">
</when>
<otherwise>
</otherwise>
</choose>
六、cache
<!--
eviction(回收策略)默认的是 LRU。
LRU – 最近最少使用的:移除最长时间不被使用的对象。
FIFO – 先进先出:按对象进入缓存的顺序来移除它们。
SOFT – 软引用:移除基于垃圾回收器状态和软引用规则的对象。
WEAK – 弱引用:更积极地移除基于垃圾收集器状态和弱引用规则的对象。
flushInterval(刷新间隔)可以被设置为任意的正整数,而且它们代表一个合理的毫秒 形式的时间段。默认情况是不设置,也就是没有刷新间隔,缓存仅仅调用语句时刷新。
size(引用数目)可以被设置为任意正整数,要记住你缓存的对象数目和你运行环境的 可用内存资源数目。默认值是 1024。
readOnly(只读)属性可以被设置为 true 或 false。只读的缓存会给所有调用者返回缓 存对象的相同实例。因此这些对象不能被修改。这提供了很重要的性能优势。可读写的缓存 会返回缓存对象的拷贝(通过序列化) 。这会慢一些,但是安全,因此默认是 false。
-->
<cache
eviction="FIFO"
flushInterval="60000"
size="512"
readOnly="true"/>