MyBatis 缓存

一、创建与数据库表对应的实体类

public class User implements Serializable {

    private int id;
    private String username;
    private String phone;
	...
}

二、创建持久层接口

public interface IUserDao {

    User findById(Integer userId);
}

三、创建持久层接口的映射文件

<mapper namespace="chu.yi.bo.dao.IUserDao">
    <select id="findById" resultType="chu.yi.bo.domain.User" parameterType="int">
        select * from user where id = #{uid};
    </select>
</mapper>

四、一级缓存

IUserDao iUserDao = session.getMapper(IUserDao.class);
User user1 = iUserDao.findById(1);
User user2 = iUserDao.findById(1);
System.out.println(user1 == user2);

      执行两次查询,查询同一条记录,但是只执行了一次 SQL 查询,一级缓存是 SqlSession 范围的缓存,当调用 SqlSession 的修改、添加、删除、提交、关闭方法,一级缓存情况。

五、二级缓存

      二级缓存是 Mapper 映射级别的缓存,当多个 SqlSession 去操作同一个 Mapper 映射的 SQL 语句,多个 SqlSession 共享二级缓存,二级缓存跨 SqlSession。

六、开启二级缓存

第一步:在 SqlMapConfig.xml 文件中开启二级缓存

<settings>
    <setting name="cacheEnabled" value="true"/>
</settings>

第二部:修改相关的持久层映射文件

<mapper namespace="chu.yi.bo.dao.IUserDao">
    <!-- 开启二级缓存支持 -->
    <cache></cache>
    <!-- useCache="true" 当前语句支持二级缓存 -->
    <select id="findById" resultType="chu.yi.bo.domain.User" parameterType="int" useCache="true">
        select * from user where id = #{uid};
    </select>   
</mapper>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值