ruoyi-common/src/main/java/com/ruoyi/common/core/mybatisplus/MybatisPlusRedisCache.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ruoyi-demo/src/main/java/com/ruoyi/demo/mapper/TestDemoMapper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ruoyi-demo/src/main/java/com/ruoyi/demo/mapper/TestTreeMapper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ruoyi-generator/src/main/resources/vm/java/mapper.java.vm | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
ruoyi-common/src/main/java/com/ruoyi/common/core/mybatisplus/MybatisPlusRedisCache.java
对比新文件 @@ -0,0 +1,102 @@ package com.ruoyi.common.core.mybatisplus; import cn.hutool.extra.spring.SpringUtil; import com.ruoyi.common.core.redis.RedisCache; import lombok.extern.slf4j.Slf4j; import org.apache.ibatis.cache.Cache; import org.springframework.data.redis.connection.RedisServerCommands; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.util.CollectionUtils; import java.util.Collection; import java.util.concurrent.locks.ReadWriteLock; import java.util.concurrent.locks.ReentrantReadWriteLock; /** * mybatis-redis 浜岀骇缂撳瓨 * * @author Lion Li */ @Slf4j public class MybatisPlusRedisCache implements Cache { private final ReadWriteLock readWriteLock = new ReentrantReadWriteLock(true); private RedisCache redisCache; private String id; public MybatisPlusRedisCache(final String id) { if (id == null) { throw new IllegalArgumentException("Cache instances require an ID"); } this.id = id; } @Override public String getId() { return this.id; } @Override public void putObject(Object key, Object value) { if (redisCache == null) { redisCache = SpringUtil.getBean(RedisCache.class); } if (value != null) { redisCache.setCacheObject(key.toString(), value); } } @Override public Object getObject(Object key) { if (redisCache == null) { //鐢变簬鍚姩鏈熼棿娉ㄥ叆澶辫触锛屽彧鑳借繍琛屾湡闂存敞鍏ワ紝杩欐浠g爜鍙互鍒犻櫎 redisCache = SpringUtil.getBean(RedisCache.class); } try { if (key != null) { return redisCache.getCacheObject(key.toString()); } } catch (Exception e) { e.printStackTrace(); log.error("缂撳瓨鍑洪敊"); } return null; } @Override public Object removeObject(Object key) { if (redisCache == null) { redisCache = SpringUtil.getBean(RedisCache.class); } if (key != null) { redisCache.deleteObject(key.toString()); } return null; } @Override public void clear() { log.debug("娓呯┖缂撳瓨"); if (redisCache == null) { redisCache = SpringUtil.getBean(RedisCache.class); } Collection<String> keys = redisCache.keys("*:" + this.id + "*"); if (!CollectionUtils.isEmpty(keys)) { redisCache.deleteObject(keys); } } @Override public int getSize() { RedisTemplate<String, Object> redisTemplate = SpringUtil.getBean("redisTemplate"); Long size = redisTemplate.execute(RedisServerCommands::dbSize); return size.intValue(); } @Override public ReadWriteLock getReadWriteLock() { return this.readWriteLock; } } ruoyi-demo/src/main/java/com/ruoyi/demo/mapper/TestDemoMapper.java
@@ -1,7 +1,9 @@ package com.ruoyi.demo.mapper; import com.ruoyi.demo.domain.TestDemo; import com.ruoyi.common.core.mybatisplus.MybatisPlusRedisCache; import com.ruoyi.common.core.page.BaseMapperPlus; import com.ruoyi.demo.domain.TestDemo; import org.apache.ibatis.annotations.CacheNamespace; /** * 娴嬭瘯鍗曡〃Mapper鎺ュ彛 @@ -9,6 +11,7 @@ * @author Lion Li * @date 2021-05-30 */ @CacheNamespace(implementation = MybatisPlusRedisCache.class, eviction = MybatisPlusRedisCache.class) public interface TestDemoMapper extends BaseMapperPlus<TestDemo> { } ruoyi-demo/src/main/java/com/ruoyi/demo/mapper/TestTreeMapper.java
@@ -1,7 +1,9 @@ package com.ruoyi.demo.mapper; import com.ruoyi.demo.domain.TestTree; import com.ruoyi.common.core.mybatisplus.MybatisPlusRedisCache; import com.ruoyi.common.core.page.BaseMapperPlus; import com.ruoyi.demo.domain.TestTree; import org.apache.ibatis.annotations.CacheNamespace; /** * 娴嬭瘯鏍戣〃Mapper鎺ュ彛 @@ -9,6 +11,7 @@ * @author Lion Li * @date 2021-05-30 */ @CacheNamespace(implementation = MybatisPlusRedisCache.class, eviction = MybatisPlusRedisCache.class) public interface TestTreeMapper extends BaseMapperPlus<TestTree> { } ruoyi-generator/src/main/resources/vm/java/mapper.java.vm
@@ -2,6 +2,8 @@ import ${packageName}.domain.${ClassName}; import com.ruoyi.common.core.page.BaseMapperPlus; import com.ruoyi.common.core.mybatisplus.MybatisPlusRedisCache; import org.apache.ibatis.annotations.CacheNamespace; /** * ${functionName}Mapper鎺ュ彛 @@ -9,6 +11,7 @@ * @author ${author} * @date ${datetime} */ @CacheNamespace(implementation = MybatisPlusRedisCache.class, eviction = MybatisPlusRedisCache.class) public interface ${ClassName}Mapper extends BaseMapperPlus<${ClassName}> { }