Mybaits的映射器配置详解
来源:互联网 发布:黑暗骑士 知乎 编辑:程序博客网 时间:2024/04/26 05:46
Mybaits的映射器配置基本元素:
cache:设置缓存配置
cache-ref:从其他的命名空间引用缓存配置
resultMap:描述了如何从结果中加载对象
sql:可以定义sql语句的部分内容以便重用
insert:映射insert语句
update:映射update语句
delete:映射delete语句
select:映射select语句
使用详解
(1)Mapper
<mapper namespace="com.yihaomen.mybatis.models.UserMapper">
<select id="selectUserByID" parameterType="int" resultType="com.yihaomen.mybatis.model.User">
select * from user where id = #{id}
</select>
</mapper>
mappe只r有一个namespace属性,该属性主要有两个作用:
a、可以有效地区分不同的mapper,在不同的mapper里可以可以有id相同的元素
b、与接口关联,接口可以使用namespace+id调用sql映射语句(所以namespace的命名务必要与接口同名)
例如:User user = (User) session.selectOne("com.yihaomen.mybatis.models.UserMapper.selectUserByID", 1);
(2)cache配置
<cache type="PERPETUAL" eviction="LRU"flushInterval="60000" size="512" readOnly="true" />
l type-cache实现类,默认为PERPETUAL,可以使用自定义的cache实现类(别名或完整类名皆可)
l eviction-回收算法,默认为LRU,可选的算法有:
LRU– 最近最少使用的:移除最长时间不被使用的对象。
FIFO– 先进先出:按对象进入缓存的顺序来移除它们。
SOFT– 软引用:移除基于垃圾回收器状态和软引用规则的对象。
WEAK– 弱引用:更积极地移除基于垃圾收集器状态和弱引用规则的对象。
l flushInterval-刷新间隔,默认为1个小时,单位毫秒
l size-缓存大小,默认大小1024,单位为引用数
l readOnly-只读
(3)cache-ref
<cache-ref namespace="com.someone.application.data.SomeMapper"/>
(4)sql标签
<sql id="userColumns"> userid,username,password</sql>
如果定义了上述的sql,那么可以在其他元素中使用userColumns代替userid,username,password
例如:
<select id="queryUsers" parameterType="UserDto" resultType="UserDto" useCache="false"> select <include refid="userColumns"/> from t_user t where t.username = #{username}
</select>
(5)select标签
- <select id="queryUsers" parameterType="UserDto" resultType="UserDto" useCache="false">
- select <include refid="userColumns"/> from t_user t where t.username = #{username}
- </select>
属性
描述
id
在命名空间中唯一的标识符,可以被用来引用这条语句。同样,id+namespace既作为configuration中缓存的key又与namespace对应的接口中的方法关联。
parameterType
将会传入这条语句的参数类的完全限定名或别名。
parameterMap
已废弃。
resultType
从这条语句中返回的期望类型的类的完全限定名或别名。注意集合情形,那应该是集合可以包含的类型,而不能是集合本身(是否使用集合由id对应的方法的返回类型决定)。使用resultType或resultMap,但不能同时使用。
resultMap
引用外部的resultMap。使用resultMap或resultType,但不能同时使用。
flushCache
将其设置为true,不论语句什么时候被调用,都会导致缓存被清空。默认值:false。
useCache
将其设置为true,将会导致本条语句的结果被缓存。默认值:true。
timeout
这个设置驱动程序等待数据库返回请求结果,并抛出异常时间的最大等待值。默认不设置(驱动自行处理)。
fetchSize
这是暗示驱动程序每次批量返回的结果行数。默认不设置(驱动自行处理)。
statementType
STATEMENT,PREPARED或CALLABLE的一种。这会让MyBatis使用选择使用Statement,PreparedStatement或CallableStatement。默认值:PREPARED。
resultSetType
FORWARD_ONLY|SCROLL_SENSITIVE|SCROLL_INSENSITIVE中的一种。默认是不设置(驱动自行处理)。
(6) insert、udpate、delete标签
- <insert id="insertUser" parameterType="UserDto" useGeneratedKeys="true" keyProperty="userid">
- insert into t_user (userid,username,password)
- values (#{userid},#{username},#{password})
- </insert>
- <update id="updateUser" parameterType="UserDto">
- update t_user set
- username = #{username},
- password = #{password},
- where userid = #{userid}
- </update>
- <delete id="deleteUser" parameterType="UserDto">
- delete from t_user where userid = #{userid}
- </delete>
属性说明如下:
属性
描述
id
在命名空间中唯一的标识符,可以被用来引用这条语句。同样,id+namespace既作为configuration中缓存的key又与namespace对应的接口中的方法关联。
parameterType
将会传入这条语句的参数类的完全限定名或别名。
parameterMap
已废弃。
flushCache
将其设置为true,不论语句什么时候被调用,都会导致缓存被清空。默认值:false。
timeout
这个设置驱动程序等待数据库返回请求结果,并抛出异常时间的最大等待值。默认不设置(驱动自行处理)。
statementType
STATEMENT,PREPARED或CALLABLE的一种。这会让MyBatis使用选择使用Statement,PreparedStatement或CallableStatement。默认值:PREPARED。
useGeneratedKeys
(仅对insert有用)这会告诉MyBatis使用JDBC的getGeneratedKeys方法来取出由数据(比如:像MySQL和SQL Server这样的数据库管理系统的自动递增字段)内部生成的主键。默认值:false。
keyProperty
(仅对insert有用)标记一个属性,MyBatis会通过getGeneratedKeys或者通过insert语句的selectKey子元素设置它的值。默认:不设置。
(7)selectKey标签:insert下的子元素(这个还需要进一步的理解????)
- <selectKey keyProperty="userid" resultType="int" order="BEFORE">
- select CAST(RANDOM()*1000000 as INTEGER) a from SYSIBM.SYSDUMMY1
- </selectKey>
selectKey给了你一个简单的行为在你的数据库中来处理自动生成的主键,而不需要使你的Java代码变得复杂。在上面的示例中,selectKey元素将会首先运行,userid会被设置,然后插入语句会被调用。另外,selectKey节点生成的KeyGenerator优先级高于insert节点的useGeneratedKeys属性生成的KeyGenerator对象,也就是说配置了SelectKey子节点就不需要再配置useGeneratedKeys属性了。属性说明如下:
属性
描述
keyProperty
selectKey语句结果设置的目标属性。
resultType
结果的类型。MyBatis允许任何简单类型用作主键的类型,包括字符串。
order
这可以被设置为BEFORE或AFTER。如果设置为BEFORE,那么它会首先选择主键,设置keyProperty然后执行插入语句。如果设置为AFTER,那么先执行插入语句,然后是selectKey元素-这和如Oracle数据库相似,可以在插入语句中嵌入序列调用。
statementType
和前面的相同,MyBatis支持STATEMENT,PREPARED和CALLABLE语句的映射类型,分别代表PreparedStatement和CallableStatement类型。
- Mybaits的映射器配置详解
- mybaits的映射器和管理
- Mybaits的配置文件详解
- Mybaits的resultMap详解
- Mybaits的参数详解
- Mybaits mapper 和 XML映射详解
- Mybaits框架的parameterType详解
- Mybaits-配置
- mybaits 中的配置,应和查询到的参数 一一对应,才可以映射到pojo类中
- mybaits映射关系整理
- MyBaits association的使用、 association详解
- 关于Mybaits映射文件<select>的条件拼接方法
- IDEA中使用MyBaits的配置问题
- hibernate 映射配置详解
- Spring Mvc Mybaits 配置
- Myeclispse 配置Spring 与Mybaits的自动提示
- Hibernate一对一映射配置详解
- hibernate中的映射配置详解
- 关于职业发展
- 唐巧的iOS技术博客好文列表
- Theano2.1.13-基础知识之PyCUDA、CUDAMat、Gnumpy的兼容
- OOAD练习题
- 数据库事物隔离机制
- Mybaits的映射器配置详解
- 【leetcode c++】21 Merge Two Sorted Lists
- 迷你mysql操作类
- Boush
- iOS 多语言支持
- Extjs4之 formpanel使用
- prototype与[[prototype]]
- 我的Java开发学习之旅------>Java经典排序算法之插入排序
- Ubuntu,mac查看端口命令