mybatis 核心配置 和 二级缓存
1.一级二级缓存(优先用二级 ,一级默认开启,二级要去配置)

如何开启二级缓存,分三步:
一是在配置文件中开启,这是开启二级缓存的总开关,默认是开启状态的:
<setting name="cacheEnabled" value="true"/>
二是在Mapper文件中开启缓存,默认是不开启的,需要手动开启:
<!-- 每个Mapper文件使用一个缓存对象 -->
<cache/>
<!-- 如果是多个Mapper文件共用一个缓存对象 -->
<cache-ref />
三是针对要查询的statement使用缓存,即在<select>节点中配置如下属性:
useCache="true"
对于二级缓存有以下说明:
- 映射语句文件中的所有 select 语句将会被缓存。
- 映射语句文件中的所有 insert,update 和 delete 语句会刷新缓存。
- 缓存会使用 Least Recently Used(LRU,最近最少使用的)算法来收回。
- 根据时间表(比如 no Flush Interval,没有刷新间隔), 缓存不会以任何时间顺序 来刷新。
- 缓存会存储列表集合或对象(无论查询方法返回什么)的 1024 个引用。
- 缓存会被视为是 read/write(可读/可写)的缓存,意味着对象检索不是共享的,而 且可以安全地被调用者修改,而不干扰其他调用者或线程所做的潜在修改。
2..取别名 默认的是类的名字小写

3.


4.resultmap映射
resultMap>元素使用案例:
1.新建数据表t_user,插入测试数据。
use mybatis
create table t_user(
t_id int identity(1,1) PRIMARY key,
t_name varchar(50),
t_age int
)
insert into t_user values ('lulu','23');
insert into t_user values ('lili','25');
insert into t_user values ('jiji','18');
2.新建持久化类User,并定义属性。
/**
* @author mz
* @version V1.0
* @Description: 用户实体类
* @create 2017-11-01 14:13
*/
public class User {
private Integer id;
private String name;
private Integer age;
//省略setter和getter方法
}
3.创建UserMapper.xml,编写映射查询语句。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.itheima.mapper.UserMapper">
<resultMap id="resultMap" type="com.itheima.po.User">
<!--<id>和<result>的property属性表示User类的属性名,column属性表示数据表t_user的列名。-->
<id property="id" column="t_id"/>
<result property="name" column="t_name"/>
<result property="age" column="t_age"/>
</resultMap>
<select id="findAllUser" resultMap="resultMap">
<!--<select>元素的resultMap属性表示引用上面定义的resultMap-->
select * from t_user
</select>
</mapper>
4.在配置文件mybatis-config中,引入UserMapper.xml,并编写测试方法
<!--配置mapper的位置-->
<mappers>
<mapper resource="com/itheima/mapper/CustomerMapper.xml"/>
<mapper resource="com/itheima/mapper/UserMapper.xml"/>
</mappers>
@Test
public void findAllUserTest() {
//获取SqlSession
SqlSession sqlSession = MybatisUtils.getSession();
//执行映射文件中定义的SQL,并返回结果
List<User> list = sqlSession.selectList("com.itheima.mapper.UserMapper.findAllUser");
for (User user : list) {
System.out.println(user);
}
//关闭SqlSession
sqlSession.close();
}

也可用以下方法替代


浙公网安备 33010602011771号