类 UserParamCache

java.lang.Object
net.sohelp.boot.admin.core.cache.UserParamCache
所有已实现的接口:
ISohelpCache

@Component public class UserParamCache extends Object implements ISohelpCache
用户个性化参数缓存(永不过期,按需失效)

Key 规则:"{userId}" → 参数 Map JSON(name → value)。 NONE 模式每次直接查库。

该缓存用于存储每个用户的个性化配置参数,例如界面偏好、默认设置等。 缓存 TTL 设置为 0,即永不自动过期,仅在手动调用 reload()delete(Object) 等方法时才会失效或刷新。

从以下版本开始:
2023/3/28
作者:
AaronFung
  • 构造器详细资料

    • UserParamCache

      public UserParamCache()
  • 方法详细资料

    • init

      @PostConstruct public void init()
      初始化方法,在 Bean 创建完成后由容器自动调用。 通过缓存管理器创建名为 "user_param"、TTL 为 0(永不过期)的缓存提供者。
    • cacheName

      public String cacheName()
      获取缓存名称。
      指定者:
      cacheName 在接口中 ISohelpCache
      返回:
      缓存名称字符串 "user_param"
    • cacheDescription

      public String cacheDescription()
      获取缓存的中文描述信息。
      指定者:
      cacheDescription 在接口中 ISohelpCache
      返回:
      缓存描述字符串 "用户个性化参数缓存"
    • getObject

      @Comment("\u83b7\u53d6Object\u7c7b\u578b\u7684\u503c") public Object getObject(@Comment("\u7528\u6237ID") Object userId, @Comment("\u53c2\u6570\u540d") String name) throws SQLException
      获取指定用户的某个参数值,返回 Object 类型。
      参数:
      userId - 用户ID,用于定位该用户的参数集合
      name - 参数名称,用于在参数 Map 中查找对应值
      返回:
      参数值对象;如果用户参数不存在或该参数名不存在,则返回 null
      抛出:
      SQLException - 当数据库操作异常时抛出
    • getString

      @Comment("\u83b7\u53d6String\u7c7b\u578b\u7684\u503c") public String getString(@Comment("\u7528\u6237ID") Object userId, @Comment("\u53c2\u6570\u540d") String key) throws SQLException
      获取指定用户的某个参数值,转换为 String 类型。
      参数:
      userId - 用户ID
      key - 参数名称
      返回:
      参数的字符串值;如果不存在则返回空字符串 ""
      抛出:
      SQLException - 当数据库操作异常时抛出
    • getInt

      @Comment("\u83b7\u53d6Integer\u7c7b\u578b\u7684\u503c") public Integer getInt(@Comment("\u7528\u6237ID") Object userId, @Comment("\u53c2\u6570\u540d") String key) throws SQLException
      获取指定用户的某个参数值,转换为 Integer 类型。
      参数:
      userId - 用户ID
      key - 参数名称
      返回:
      参数的整数值;如果不存在或转换失败则返回 null
      抛出:
      SQLException - 当数据库操作异常时抛出
    • getDouble

      @Comment("\u83b7\u53d6Double\u7c7b\u578b\u7684\u503c") public Double getDouble(@Comment("\u7528\u6237ID") Object userId, @Comment("\u53c2\u6570\u540d") String key) throws SQLException
      获取指定用户的某个参数值,转换为 Double 类型。
      参数:
      userId - 用户ID
      key - 参数名称
      返回:
      参数的双精度浮点值;如果不存在或转换失败则返回 null
      抛出:
      SQLException - 当数据库操作异常时抛出
    • getFloat

      @Comment("\u83b7\u53d6Float\u7c7b\u578b\u7684\u503c") public Float getFloat(@Comment("\u7528\u6237ID") Object userId, @Comment("\u53c2\u6570\u540d") String key) throws SQLException
      获取指定用户的某个参数值,转换为 Float 类型。
      参数:
      userId - 用户ID
      key - 参数名称
      返回:
      参数的单精度浮点值;如果不存在或转换失败则返回 null
      抛出:
      SQLException - 当数据库操作异常时抛出
    • getDate

      @Comment("\u83b7\u53d6\u65e5\u671f") public String getDate(@Comment("\u7528\u6237ID") Object userId, @Comment("\u53c2\u6570\u540d") String key) throws SQLException
      获取指定用户的某个参数值,格式化为日期字符串(yyyy-MM-dd)。
      参数:
      userId - 用户ID
      key - 参数名称
      返回:
      格式为 "yyyy-MM-dd" 的日期字符串;如果值为 null 则返回 null
      抛出:
      SQLException - 当数据库操作异常时抛出
    • getDateTime

      @Comment("\u83b7\u53d6\u65e5\u671f\u65f6\u95f4") public String getDateTime(@Comment("\u7528\u6237ID") Object userId, @Comment("\u53c2\u6570\u540d") String key) throws SQLException
      获取指定用户的某个参数值,格式化为日期时间字符串(yyyy-MM-dd HH:mm:ss)。
      参数:
      userId - 用户ID
      key - 参数名称
      返回:
      格式为 "yyyy-MM-dd HH:mm:ss" 的日期时间字符串;如果值为 null 则返回 null
      抛出:
      SQLException - 当数据库操作异常时抛出
    • getJson

      @Comment("\u83b7\u53d6JSONObject\u7c7b\u578b\u7684\u503c") public com.alibaba.fastjson.JSONObject getJson(@Comment("\u7528\u6237ID") Object userId, @Comment("\u53c2\u6570\u540d") String key) throws SQLException
      获取指定用户的某个参数值,解析为 JSONObject 对象。
      参数:
      userId - 用户ID
      key - 参数名称
      返回:
      解析后的 JSONObject 对象;如果值为空字符串则可能返回 null
      抛出:
      SQLException - 当数据库操作异常时抛出
    • getMap

      @Comment("\u83b7\u53d6Map\u7c7b\u578b\u7684\u503c") public Map<String,Object> getMap(@Comment("\u7528\u6237ID") Object userId, @Comment("\u53c2\u6570\u540d") String key) throws SQLException
      获取指定用户的某个参数值,解析为 Map<String, Object>
      参数:
      userId - 用户ID
      key - 参数名称
      返回:
      解析后的 Map 对象;如果值为空或空白字符串,则返回空的 HashMap
      抛出:
      SQLException - 当数据库操作异常时抛出
    • getList

      @Comment("\u83b7\u53d6List\u7c7b\u578b\u7684\u503c") public List<Object> getList(@Comment("\u7528\u6237ID") Object userId, @Comment("\u53c2\u6570\u540d") String key) throws SQLException
      获取指定用户的某个参数值,解析为 List<Object>
      参数:
      userId - 用户ID
      key - 参数名称
      返回:
      解析后的 List 对象;如果值为空或空白字符串,则返回空的 ArrayList
      抛出:
      SQLException - 当数据库操作异常时抛出
    • getBoolean

      @Comment("\u83b7\u53d6Boolean\u7c7b\u578b\u7684\u503c") public Boolean getBoolean(@Comment("\u7528\u6237ID") Object userId, @Comment("\u53c2\u6570\u540d") String key) throws SQLException
      获取指定用户的某个参数值,转换为 Boolean 类型。
      参数:
      userId - 用户ID
      key - 参数名称
      返回:
      参数的布尔值;字符串 "true"(忽略大小写)返回 true,其他返回 false
      抛出:
      SQLException - 当数据库操作异常时抛出
    • update

      @Comment("\u66f4\u65b0\u7f13\u5b58") public void update(@Comment("\u7528\u6237ID") Object userId, @Comment("\u53c2\u6570\u540d") String name, @Comment("\u53c2\u6570\u503c") Object value) throws SQLException
      更新或新增指定用户的某个参数值。

      如果该参数名在缓存中不存在,则执行数据库插入操作; 如果已存在,则执行数据库更新操作。操作完成后同步更新缓存。

      参数:
      userId - 用户ID
      name - 参数名称
      value - 参数值
      抛出:
      SQLException - 当数据库操作异常时抛出
    • delete

      @Comment("\u6839\u636e\u7528\u6237ID\uff0c\u5220\u9664\u6240\u6709\u4e2a\u6027\u5316\u53c2\u6570") public void delete(@Comment("\u7528\u6237ID") Object userId) throws SQLException
      根据用户ID,删除该用户的所有个性化参数。

      同时清除缓存中对应的条目以及数据库中该用户的全部参数记录。

      参数:
      userId - 用户ID
      抛出:
      SQLException - 当数据库操作异常时抛出
    • delete

      @Comment("\u6839\u636e\u7528\u6237ID\u548cKey\uff0c\u5220\u9664\u6240\u6709\u4e2a\u6027\u5316\u53c2\u6570") public void delete(@Comment("\u7528\u6237ID") Object userId, @Comment("\u53c2\u6570\u540d") String name) throws SQLException
      根据用户ID和参数名,删除该用户的指定个性化参数。

      从缓存的参数 Map 中移除指定键,并同步删除数据库中对应的记录。

      参数:
      userId - 用户ID
      name - 要删除的参数名称
      抛出:
      SQLException - 当数据库操作异常时抛出
    • reload

      @Comment("\u521d\u59cb\u5316\u7f13\u5b58\uff08\u5168\u91cf\uff09") public void reload() throws SQLException
      全量重新加载所有用户的个性化参数缓存。

      先清空整个缓存,然后从数据库读取全部用户参数记录, 按用户ID分组后批量写入缓存。如果缓存未启用(NONE 模式),则仅执行清空操作后直接返回。

      指定者:
      reload 在接口中 ISohelpCache
      抛出:
      SQLException - 当数据库操作异常时抛出
    • reload

      @Comment("\u6839\u636e\u7528\u6237ID\u91cd\u65b0\u52a0\u8f7d\u7f13\u5b58") public void reload(@Comment("\u7528\u6237ID") Object userId) throws SQLException
      根据指定用户ID重新加载该用户的个性化参数缓存。

      先移除缓存中该用户的旧数据,然后从数据库读取该用户的全部参数记录并写入缓存。 如果缓存未启用(NONE 模式),则仅执行移除操作后直接返回。

      参数:
      userId - 用户ID
      抛出:
      SQLException - 当数据库操作异常时抛出