myBatis介绍

总体来说MyBatis主要完成两件事情:

1、根据JDBC规范建立与数据库的连接;

2、通过Annotaion/XML+JAVA反射技术,实现Java对象与关系数据库之间相互转化。

原理介绍:

Mybatis的应用是围绕着一个SqlSessionFactory实例展开的。SqlSessionFactoryBuilder根据XML映射文件创建SqlSessionFactory,有了SqlSessionFactory我们就可以获取SqlSession,而SqlSession拥有执行sql语句的各种方法.

SqlSessionsession=sqlSessionFactory.openSession();

try{

BlogMappermapper=session.getMapper(BlogMapper.class);

Blogblog=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、用于返回一个对象,对象里面包括部分信息.

<resultMapclass="包.User"id="User">

<resultproperty="name"column="NAME"/>

</resultMap>

<selectid="getUserByID"resultMap="User">

SelectNAMEfromUserwhereid=#id#

</select>

2、用于返回一个复杂的对象:返回的一个User对象中包含一个List<Role>对象

<resultMaptype="User"id="resultUser">

<idproperty="id"column="id"/>

<collectionproperty="role_list"column="id"select="selectRoleList"></collection>

注:column="id"表示他是selectRoleList的参数

</resultMap>

<selectid="selectRoleList"paramType="User"resultType="Role">

select*fromrolerleftjoinuseruonr.userId=u.idwhereu.id=#{id}

</select>

相关推荐