myBatis介绍
总体来说 MyBatis 主要完成两件事情:1、根据 JDBC 规范建立与数据库的连接;
2、通过Annotaion/XML+JAVA反射技术,实现 Java对象与关系数据库之间相互转化。
原理介绍:
Mybatis的应用是围绕着一个SqlSessionFactory实例展开的。SqlSessionFactoryBuilder根据XML映射文件创建SqlSessionFactory,有了SqlSessionFactory我们就可以获取SqlSession,而SqlSession拥有执行sql语句的各种方法.
SqlSession session = sqlSessionFactory.openSession();
try {
BlogMapper mapper = session.getMapper(BlogMapper.class);
Blog blog = mapper.selectBlog(101);
} finally {
session.close();
}
MyBatis的缓存:
缓存技术是一种“以空间换时间”的设计理念,利用内存空间资源来提高数据检索速度的有效手段之一。MyBatis默认情况下是没有开启缓存的,除了局部的 session 缓存。要开启二级缓存,你需要在你的 SQL映射文件中添加一行:
1、<cache/> 这样配置会开启二级缓存,并且加载缺省的缓存配置
2、跟新缓存配置<cache
eviction="FIFO"
flushInterval="60000"
size="512"
readOnly="true"/>这个配置创建了一个 FIFO 缓存,并每隔 60 秒刷新,存取512 个结果对象或列表的引用,而且返回的对象为只读,因此在不同线程中的调用者之间修改它们会导致冲突。
注意:二级缓存是支持事物的,这意味着只有在SqlSession结束和提交的时候,或者当回滚结束并且插入、删除、更新操作没有配置flushCache=true,才会更新缓存内容。
3、第三方缓存要实现mybatis的接口:
Mybatis的用法:
resultType=""paramType="" 实现参数或返回值,而且还实现动态的sql:用if判断 <where> <include>等.<resultMap>1、用于返回一个对象,对象里面包括部分信息.
<resultMap class="包.User" id="User">
<result property="name" column="NAME" />
</resultMap>
<select id="getUserByID" resultMap="User">
Select NAME from User where id =#id#
</select>
2、用于返回一个复杂的对象:返回的一个User对象中包含一个List<Role>对象
<resultMap type="User" id="resultUser">
<id property="id" column="id"/>
<collection property="role_list" column="id" select="selectRoleList"></collection>
注:column = "id" 表示他是selectRoleList的参数
</resultMap>
<select id="selectRoleList" paramType="User" resultType="Role">
select * from role r left join user u on r.userId = u.id where u.id = #{id}
</select>
页:
[1]