Class SuperCacheManagerImpl<M extends SuperMapper<T>,T extends SuperEntity>
java.lang.Object
com.baomidou.mybatisplus.extension.repository.AbstractRepository<M,T>
com.baomidou.mybatisplus.extension.repository.CrudRepository<M,T>
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl<M,T>
top.tangyh.basic.base.manager.impl.SuperManagerImpl<M,T>
top.tangyh.basic.base.manager.impl.SuperCacheManagerImpl<M,T>
- Type Parameters:
M-T-
- All Implemented Interfaces:
com.baomidou.mybatisplus.extension.repository.IRepository<T>,com.baomidou.mybatisplus.extension.service.IService<T>,SuperCacheManager<T>,SuperManager<T>
public abstract class SuperCacheManagerImpl<M extends SuperMapper<T>,T extends SuperEntity>
extends SuperManagerImpl<M,T>
implements SuperCacheManager<T>
基于 CacheOps 实现的 缓存实现
默认的key规则: #{CacheKeyBuilder#key()}:id
1,getByIdCache:新增的方法: 先查缓存,在查db 2,removeById:重写 ServiceImpl 类的方法,删除db后,淘汰缓存 3,removeByIds:重写 ServiceImpl 类的方法,删除db后,淘汰缓存 4,updateAllById: 新增的方法: 修改数据(所有字段)后,淘汰缓存 5,updateById:重写 ServiceImpl 类的方法,修改db后,淘汰缓存
- Author:
- zuihou
-
Field Summary
FieldsFields inherited from class com.baomidou.mybatisplus.extension.repository.CrudRepository
baseMapperFields inherited from class com.baomidou.mybatisplus.extension.repository.AbstractRepository
logFields inherited from interface com.baomidou.mybatisplus.extension.repository.IRepository
DEFAULT_BATCH_SIZE -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected abstract CacheKeyBuilder缓存key 构造器voidclearCache(List<Long> ids) 清理缓存voiddelCache(Serializable... ids) 清理缓存voiddelCache(Collection<?> idList) 清理缓存void清理缓存findByIds(Collection<? extends Serializable> ids, Function<Collection<? extends Serializable>, Collection<T>> loader) 根据ID,批量查询缓存。<E> Set<E>findCollectByIds(List<Long> keyIdList, Function<Long, CacheKey> cacheBuilder, Function<Long, List<E>> loader) 根据id 批量查询缓存根据id 先查缓存,再查db根据 key 查询缓存中存放的id,缓存不存在根据loader加载并写入数据,然后根据查询出来的id查询 实体protected ObjectvoidrefreshCache(List<Long> ids) 刷新缓存booleanbooleanremoveByIds(Collection<?> idList) booleanbooleansaveBatch(Collection<T> entityList, int batchSize) booleansaveOrUpdateBatch(Collection<T> entityList, int batchSize) void设置缓存booleanupdateAllById(T model) 根据id修改 entity 的所有字段booleanupdateBatchById(Collection<T> entityList, int batchSize) booleanupdateById(T model) Methods inherited from class top.tangyh.basic.base.manager.impl.SuperManagerImpl
getEntityClass, getSuperMapperMethods inherited from class com.baomidou.mybatisplus.extension.repository.CrudRepository
getBaseMapper, getSqlStatementMethods inherited from class com.baomidou.mybatisplus.extension.repository.AbstractRepository
executeBatch, executeBatch, getMap, getMapperClass, getObj, getOne, getOneOpt, getSqlSessionFactory, removeById, saveOrUpdateMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface com.baomidou.mybatisplus.extension.repository.IRepository
count, count, exists, getBaseMapper, getById, getMap, getObj, getOne, getOne, getOneOpt, getOneOpt, getOptById, ktQuery, ktUpdate, lambdaQuery, lambdaQuery, lambdaUpdate, list, list, list, list, listByIds, listByMap, listMaps, listMaps, listMaps, listMaps, listObjs, listObjs, listObjs, listObjs, page, page, pageMaps, pageMaps, query, remove, removeById, removeById, removeByIds, removeByMap, saveOrUpdate, update, update, updateMethods inherited from interface com.baomidou.mybatisplus.extension.service.IService
removeBatchByIds, saveBatch, saveOrUpdateBatch, updateBatchByIdMethods inherited from interface top.tangyh.basic.base.manager.SuperManager
getEntityClass, saveBatchSomeColumn
-
Field Details
-
MAX_BATCH_KEY_SIZE
protected static final int MAX_BATCH_KEY_SIZE- See Also:
-
cacheOps
-
-
Constructor Details
-
SuperCacheManagerImpl
public SuperCacheManagerImpl()
-
-
Method Details
-
cacheKeyBuilder
缓存key 构造器- Returns:
- 缓存key构造器
-
getByIdCache
Description copied from interface:SuperCacheManager根据id 先查缓存,再查db- Specified by:
getByIdCachein interfaceSuperCacheManager<M extends SuperMapper<T>>- Parameters:
id- 主键- Returns:
- 对象
-
findCollectByIds
@Transactional(readOnly=true) public <E> Set<E> findCollectByIds(List<Long> keyIdList, Function<Long, CacheKey> cacheBuilder, Function<Long, List<E>> loader) Description copied from interface:SuperCacheManager根据id 批量查询缓存- Specified by:
findCollectByIdsin interfaceSuperCacheManager<M extends SuperMapper<T>>- Type Parameters:
E- 查询的对象- Parameters:
keyIdList- id集合cacheBuilder- 缓存key构造器loader- 加载数据的回调方法- Returns:
-
findByIds
@Transactional(readOnly=true) public List<T> findByIds(@NonNull Collection<? extends Serializable> ids, Function<Collection<? extends Serializable>, Collection<T>> loader) Description copied from interface:SuperCacheManager根据ID,批量查询缓存。 若缓存中不存在某条数据,则去数据库中加载数据, 数据库中不存在的数据,直接缓存空缓存。1. 分批次从redis通过 mget 命令获取数据 2. 将redis中不存在的数据(missedIds)通过loader方法 查询出来 3. 将loader方法查询出来的结果(missList) 设置到redis中缓存起来 4. 将loader方法方法未查询出来的结果,设置到redis缓存为 "空值"
注意: 1. ids 参数的数量和返回值的数量一致 2. 若数据库中不存在 ids 的某一个值,返回值对应的数据为 null, 并将会向redis缓存空值
- Specified by:
findByIdsin interfaceSuperCacheManager<M extends SuperMapper<T>>- Parameters:
ids- 主键idloader- 回调- Returns:
- 对象集合
-
getByKey
Description copied from interface:SuperCacheManager根据 key 查询缓存中存放的id,缓存不存在根据loader加载并写入数据,然后根据查询出来的id查询 实体- Specified by:
getByKeyin interfaceSuperCacheManager<M extends SuperMapper<T>>- Parameters:
key- 缓存keyloader- 加载器- Returns:
- 对象
-
removeById
- Specified by:
removeByIdin interfacecom.baomidou.mybatisplus.extension.repository.IRepository<M extends SuperMapper<T>>
-
removeByIds
@Transactional(rollbackFor=java.lang.Exception.class) public boolean removeByIds(Collection<?> idList) - Specified by:
removeByIdsin interfacecom.baomidou.mybatisplus.extension.repository.IRepository<M extends SuperMapper<T>>
-
save
- Specified by:
savein interfacecom.baomidou.mybatisplus.extension.repository.IRepository<M extends SuperMapper<T>>
-
updateAllById
Description copied from interface:SuperManager根据id修改 entity 的所有字段- Specified by:
updateAllByIdin interfaceSuperManager<M extends SuperMapper<T>>- Overrides:
updateAllByIdin classSuperManagerImpl<M extends SuperMapper<T>,T extends SuperEntity> - Returns:
-
updateById
- Specified by:
updateByIdin interfacecom.baomidou.mybatisplus.extension.repository.IRepository<M extends SuperMapper<T>>
-
saveBatch
@Transactional(rollbackFor=java.lang.Exception.class) public boolean saveBatch(Collection<T> entityList, int batchSize) - Specified by:
saveBatchin interfacecom.baomidou.mybatisplus.extension.repository.IRepository<M extends SuperMapper<T>>- Overrides:
saveBatchin classcom.baomidou.mybatisplus.extension.repository.CrudRepository<M extends SuperMapper<T>,T extends SuperEntity>
-
saveOrUpdateBatch
@Transactional(rollbackFor=java.lang.Exception.class) public boolean saveOrUpdateBatch(Collection<T> entityList, int batchSize) - Specified by:
saveOrUpdateBatchin interfacecom.baomidou.mybatisplus.extension.repository.IRepository<M extends SuperMapper<T>>- Overrides:
saveOrUpdateBatchin classcom.baomidou.mybatisplus.extension.repository.CrudRepository<M extends SuperMapper<T>,T extends SuperEntity>
-
updateBatchById
@Transactional(rollbackFor=java.lang.Exception.class) public boolean updateBatchById(Collection<T> entityList, int batchSize) - Specified by:
updateBatchByIdin interfacecom.baomidou.mybatisplus.extension.repository.IRepository<M extends SuperMapper<T>>- Overrides:
updateBatchByIdin classcom.baomidou.mybatisplus.extension.repository.CrudRepository<M extends SuperMapper<T>,T extends SuperEntity>
-
refreshCache
Description copied from interface:SuperCacheManager刷新缓存- Specified by:
refreshCachein interfaceSuperCacheManager<M extends SuperMapper<T>>
-
clearCache
Description copied from interface:SuperCacheManager清理缓存- Specified by:
clearCachein interfaceSuperCacheManager<M extends SuperMapper<T>>
-
delCache
Description copied from interface:SuperCacheManager清理缓存- Specified by:
delCachein interfaceSuperCacheManager<M extends SuperMapper<T>>
-
delCache
Description copied from interface:SuperCacheManager清理缓存- Specified by:
delCachein interfaceSuperCacheManager<M extends SuperMapper<T>>
-
delCache
Description copied from interface:SuperCacheManager清理缓存- Specified by:
delCachein interfaceSuperCacheManager<M extends SuperMapper<T>>
-
setCache
Description copied from interface:SuperCacheManager设置缓存- Specified by:
setCachein interfaceSuperCacheManager<M extends SuperMapper<T>>
-
getId
-