spring 集成mybatis使用二级缓存


集成了 spring 之后,似乎没有办法直接使用一级缓存了,但是二级缓存还是可以的。
它将采用默认的行为进行缓存:
  •  映射文件中所有的select语句将被缓存
  •  映射文件中所有的insert、update和delete语句将刷新缓存 
  •  缓存将使用LRU(Least Recently Used)最近最少使用策略算法来回收
  •  刷新间隔(no Flush Interval,没有刷新间隔),缓存不会以任何时间顺序来刷新
  •  缓存会存储列表集合和对象(无论查询方法返回什么)的1024个引用 
  •  缓存会被视为read/write(可读/可写)的缓存,意味着对象检索不是共享的,而且可以安全的被调用者修改,而不干扰其他调用者或者线程所做的潜在修改
所有这些属性都可以通过缓存元素的属性来修改,比如: 
<cache 
 eviction="FIFO"  
 flushInterval="10800000"  size="512" 
 readOnly="true"  
/> 

一、实体类
import  java.io.Serializable;  
import  java.util.Date;  
  
public   class  User  implements  Serializable {  
  
private   static   final   long  serialVersionUID = -8081225022334946487L;  
     private   int  id;  
     private  String name;  
     private  Date birthday;  
     private   double  salary;  
     public   int  getId() {  
         return  id;  
    }  
     public   void  setId( int  id) {  
         this .id = id;  
    }  
     public  String getName() {  
         return  name;  
    }  
     public   void  setName(String name) {  
         this .name = name;  
    }  
     public  Date getBirthday() {  
         return  birthday;  
    }  
     public   void  setBirthday(Date birthday) {  
         this .birthday = birthday;  
    }  
     public   double  getSalary() {  
         return  salary;  
    }  
     public   void  setSalary( double  salary) {  
         this .salary = salary;  
    }  
     @Override   
     public  String toString() {  
         return   "User [id="  + id +  ", name="  + name +  ", birthday="  + birthday  
                +  ", salary="  + salary +  "]" ;  
    }  
      
      
}  

同样要实现Serializable接口。

二、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.mapper.UserMapper" >   
     <cache/>   
      
     <resultMap   type = "User"   id = "userResult" >   
         <result   column = "user_id"   property = "id" />   
         <result   column = "user_name"   property = "name" />   
         <result   column = "user_birthday"   property = "birthday" />   
         <result   column = "user_salary"   property = "salary" />   
     </resultMap>   
      
     <!-- 取得插入数据后的 id -->   
  1.     <insert id="save" keyColumn="user_id" keyProperty="id" useGeneratedKeys="true">  
        insert into s_user(user_name,user_birthday,user_salary)  
        values(#{name},#{birthday},#{salary})  
     </insert>   
      
     <update   id = "update" >   
        update s_user  
        set  user_name  = #{name},  
         user_birthday  = #{birthday},  
         user_salary  = #{salary}  
        where  user_id  = #{id}  
     </update>   
      
     <delete   id = "delete" >   
        delete from s_user  
        where  user_id  = #{id}  
     </delete>   
      
     <select   id = "findById"   resultMap = "userResult" >   
        select *  
        from s_user  
        where  user_id  = #{id}  
     </select>   
      
     <select   id = "findAll"   resultMap = "userResult" >   
        select *   
        from s_user  
     </select>   
</mapper>   
同样加上<cache/>就可以了。
有些select不想被缓存时,可以添加select的属性useCache=“false”;有些insert、update和delete不想让他刷新缓存时,添加属性flushCache=”false ”。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值