1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/qiujiayu-AutoLoadCache

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
annotations.md 4.1 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 27.11.2024 00:26 77bc1ee

Аннотация @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 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/qiujiayu-AutoLoadCache.git
git@api.gitlife.ru:oschina-mirror/qiujiayu-AutoLoadCache.git
oschina-mirror
qiujiayu-AutoLoadCache
qiujiayu-AutoLoadCache
master