Аннотация @Cache
public interface UserMapper {
/**
* Согласно пользовательскому идентификатору получить информацию о пользователе
*
* @param id
* @return
*/
@Cache(expire = 60, expireExpression = "null == #retVal ? 30: 60", key = "'user-byid-' + #args[0]")
UserDO getUserById(Long id);
@Cache(expire = 60, expireExpression = "null == #retVal ? 30: 60",
// Потому что в режиме Magic будет происходить разделение параметров, поэтому для получения параметра используется #args[0],
// Если данные параметра являются сложным типом, например List<UserDO>, то для получения параметра используйте #args[0].id
// Чтобы уменьшить проблемы с кэшем, сгенерированные значения ключа должны быть такими же, как и у метода getUserById
key = "'user-byid-' + #args[0]",
magic = @Magic(
// Потому что в режиме Magic происходит разделение массива и данных типа коллекции, поэтому для получения возвращаемого значения используется #retVal,
// Ключ, сгенерированный этим выражением, также должен быть таким же, как у метода getUserById
key = "'user-byid-' + #retVal.id"))
List<UserDO> listByIds(@Param("ids") List<Long> ids);
/**
* Получить список идентификаторов пользователей согласно динамически комбинированным условиям запроса
*
* @param condition
* @return
**/
List<Long> listIdsByCondition(UserCondition condition);
/**
* Добавить информацию о пользователе
*
* @param user
*/
@CacheDelete({ @CacheDeleteKey(value = "'user-byid-' + #args[0].id") })
int addUser(UserDO user);
/**
* Обновить информацию о пользователе
*
* @param user
* @return
*/
@CacheDelete({ @CacheDeleteKey(value = "'user-byid-' + #args[0].id", condition = "#retVal > 0") })
int updateUser(UserDO user);
/**
* Удалить запись пользователя по идентификатору пользователя
**/
@CacheDelete({ @CacheDeleteKey(value = "'user-byid-' + #args[0]", condition = "#retVal > 0") })
int deleteUserById(Long id);
}
Аннотация @ExCache
Пример использования: если в системе используются методы getUserById и getUserByName для получения информации о пользователе, мы можем создать кэш для getUserByName при использовании getUserById, и наоборот, при использовании getUserByName мы также можем создать кэш для getUserById:
@Cache(expire=600, key="'USER.getUserById'+#args[0]", exCache={@ExCache(expire=600, key="'USER.getUserByName'+#retVal.name")})
public User getUserById(Long id){... ...}
@Cache(expire=600, key="'USER.getUserByName'+#args[0]", exCache={@ExCache(expire=600, key="'USER.getUserById'+#retVal.id")})
public User getUserByName(Long id){... ...}
Аннотация @CacheDelete — аннотация для удаления кэша.
Аннотация @CacheDeleteKey — генерирует ключ для удаления кэша.
Аннотация @CacheDeleteTransactional — аннотация для пакетного удаления кэша в транзакционной среде.
Аннотация @LocalCache — локальная аннотация кэша.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )