@Override
// @CacheEvict(key = "#root.targetClass.simpleName + #record.id")
@CachePut(key = "#root.targetClass.simpleName + #record.id")
public T updateById(T record) {
baseMapper.updateByPrimaryKeySelective(record);
return record;
}
原本是更新数据就直接删除缓存 但是感觉不是合理 试了一下 CachePut 即使是 null 也会更新 不过后来想到应该可以用 condition 和 spel 来定制规则 但是又有新的问题 因为是通用 service 里面 具体的 bean 的是未知的 想不到有什么思路可以实现
1
xuanbg 2018-09-17 20:36:31 +08:00
这个注解是没办法了,只能自己通过反射来解决
|
3
zhady009 OP |
4
zjp 2018-09-17 21:50:10 +08:00 via Android
@zhady009 如果是 RedisCacheManager 之类的做不到,缓存的是序列化后的数据。用 ConcurrentMapCacheManager 好像也得手工操作… condition 和 unless 都只能用字符串配置
|
5
xbigfat 2018-09-17 22:38:17 +08:00
楼主你好,你讲的这个我刚刚好在写~按照我的理解来说,其实是一个 Query 操作。
给定一个 T element 对象,element 中填充了部分成员,返回一个 List<T> 中就是楼主需要的结果了。 首先要根据现有的 element 组成一个 SQL 语句,执行查询之后,返回到 ResultSet rs。 然后用这个 rs 生成 List<T> 即可; 我刚刚写到最后一步,就看到你的帖子了,希望对你有帮助~(这个最后一步我还没写好,但是是用反射,直接赋) |
6
xbigfat 2018-09-17 22:41:38 +08:00
又看了一遍,如果我理解错了请轻拍。
|
7
zhady009 OP |