mybatis整合redies,使用redis作为二级缓存

方法一

(一)、RedisCache(mybatis二级缓存实现类)

1/** 2 * Created by hhjian on 17-6-27. 3 */ 4public class RedisCache implements Cache { 5 6 private static final Logger logger = LoggerFactory.getLogger(RedisCache.class); 7 8 private static JedisConnectionFactory jedisConnectionFactory; 9 10 private final String id; 11 12 private final ReadWriteLock readWriteLock = new ReentrantReadWriteLock(); 13 14 public RedisCache(final String id) { 15 if (id == null) { 16 throw new IllegalArgumentException("Cache instances require an ID"); 17 } 18 this.id = id; 19 } 20 21 @Override 22 public String getId() { 23 return this.id; 24 } 25 26 @Override 27 public void putObject(Object o, Object o1) { 28 RedisConnection connection = jedisConnectionFactory.getConnection(); 29 connection.set(serializer(o), serializer(o1)); 30 connection.close(); 31 } 32 33 @Override 34 public Object getObject(Object key) { 35 RedisConnection connection = jedisConnectionFactory.getConnection(); 36 Object object = deSerializer(connection.get(serializer(key))); 37 connection.close(); 38 return object; 39 } 40 41 @Override 42 public Object removeObject(Object o) { 43 RedisConnection connection = jedisConnectionFactory.getConnection(); 44 Object object = connection.expire(serializer(o), 0); 45 return object; 46 } 47 48 @Override 49 public void clear() { 50 RedisConnection connection = jedisConnectionFactory.getConnection(); 51 connection.flushDb(); 52 connection.flushAll(); 53 connection.close(); 54 } 55 56 @Override 57 public int getSize() { 58 RedisConnection connection = jedisConnectionFactory.getConnection(); 59 int size = Integer.valueOf(connection.dbSize().toString()); 60 connection.close(); 61 return size; 62 } 63 64 @Override 65 public ReadWriteLock getReadWriteLock() { 66 return this.readWriteLock; 67 } 68 69 public static void setJedisConnectionFactory(JedisConnectionFactory jedisConnectionFactory) { 70 RedisCache.jedisConnectionFactory = jedisConnectionFactory; 71 } 72 73 private byte[] serializer(Object arg) { 74 RedisSerializer<Object> serializer = new JdkSerializationRedisSerializer(); 75 return serializer.serialize(arg); 76 } 77 78 private Object deSerializer(byte[] arg) { 79 RedisSerializer<Object> serializer = new JdkSerializationRedisSerializer(); 80 return serializer.deserialize(arg); 81 } 82}

(二)、静态注入 jedisConnectionFactory

1<bean id="redisCache" class="com.linkworld.dao.RedisCacheTransfer"> 2 <property name="jedisConnectionFactory" ref="jedisConnectionFactory"/> 3</bean> 4 5/** 6 * Created by hhjian on 17-6-27. 7 */ 8public class RedisCacheTransfer { 9 10 @Autowired 11 public void setJedisConnectionFactory(JedisConnectionFactory jedisConnectionFactory) { 12 RedisCache.setJedisConnectionFactory(jedisConnectionFactory); 13 } 14} 15

(三)、开启缓存

1<setting name="cacheEnabled" value="true"/> 2<cache type="com.linkworld.dao.RedisCache" eviction="FIFO" readOnly="true" />

方法二 官方文档方法

mybatis-redis

1<dependencies> 2 ... 3 <dependency> 4 <groupId>org.mybatis.caches</groupId> 5 <artifactId>mybatis-redis</artifactId> 6 <version>1.0.0-beta2</version> 7 </dependency> 8 ... 9</dependencies>

then, just configure it in the mapper XML

1<mapper namespace="org.acme.FooMapper"> 2 <cache type="org.mybatis.caches.redis.RedisCache" /> 3 ... 4</mapper>
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )