类 RoleCache

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

@Component public class RoleCache extends Object implements ISohelpCache
岗位缓存(永不过期,按需失效)

Key 规则:"role:{roleId}" → 岗位名称。 NONE 模式每次直接查库。

从以下版本开始:
2023/7/21 15:17
作者:
AaronFung
  • 构造器详细资料

    • RoleCache

      public RoleCache()
  • 方法详细资料

    • init

      @PostConstruct public void init()
      初始化方法,在 Bean 创建后自动调用

      通过 SohelpCacheManager 创建名为 "role"、永不过期(TTL=0)的缓存提供者。

    • cacheName

      public String cacheName()
      获取缓存名称(唯一标识)
      指定者:
      cacheName 在接口中 ISohelpCache
      返回:
      缓存唯一标识名称 "role"
    • cacheDescription

      public String cacheDescription()
      获取缓存描述信息
      指定者:
      cacheDescription 在接口中 ISohelpCache
      返回:
      缓存的中文描述文本 "岗位缓存"
    • reload

      @Comment("\u542f\u52a8\uff0c\u52a0\u8f7d\u5c97\u4f4d\u5230\u7f13\u5b58") public void reload() throws SQLException
      从数据库重新加载全部岗位数据到缓存

      先清空现有缓存,然后从 pb_role 表查询所有岗位, 将岗位 ID 与岗位名称的映射写入缓存。跳过名称为空的岗位。

      指定者:
      reload 在接口中 ISohelpCache
      抛出:
      SQLException - 数据库查询过程中发生异常
    • reload

      @Comment("\u6839\u636e\u5c97\u4f4dID,\u91cd\u65b0\u52a0\u8f7d\u5230\u7f13\u5b58") public void reload(@Comment("\u5c97\u4f4dID") Object roleId) throws SQLException
      根据岗位 ID 重新加载单个岗位到缓存

      先移除该岗位的旧缓存条目,再从数据库查询最新数据并写入缓存。 仅在查询结果非空且岗位名称非空且缓存启用时才写入。

      参数:
      roleId - 岗位 ID,为 null 或空字符串时不执行任何操作
      抛出:
      SQLException - 数据库查询过程中发生异常
    • getRole

      public Map<String,Object> getRole(Long roleId)
      获取单个岗位信息

      根据岗位 ID 从缓存中获取岗位名称,并组装成包含 idrole_name 的 Map。 若缓存中未找到名称,则默认显示 "Unknown Role"。

      参数:
      roleId - 岗位 ID,不能为 null
      返回:
      包含 "id" 和 "role_name" 的 Map
    • getRoles

      public List<Map<String,Object>> getRoles(List<Long> roles)
      批量获取岗位信息列表

      根据岗位 ID 列表,逐个从缓存中获取岗位名称并组装成包含 idrole_name 的 Map 列表。 若缓存中未找到名称,则默认显示 "未知角色"。

      参数:
      roles - 岗位 ID 列表,为 null 时返回空列表
      返回:
      岗位信息列表,每个元素为包含 "id" 和 "role_name" 的 Map
    • getRoleName

      @Comment("\u83b7\u53d6\u5c97\u4f4d\u540d\u79f0") public String getRoleName(@Comment("\u5c97\u4f4dID") Object roleId) throws SQLException
      根据岗位 ID 获取岗位名称

      优先从缓存中获取;若缓存未启用(NONE 模式),则直接查询数据库。 若缓存中未命中,会触发全量重载后再次尝试获取。

      参数:
      roleId - 岗位 ID,为 null 或空字符串时返回空字符串
      返回:
      岗位名称;未找到时返回空字符串
      抛出:
      SQLException - 数据库查询过程中发生异常
    • remove

      @Comment("\u6e05\u7a7a\u5c97\u4f4d\u7f13\u5b58") public void remove(@Comment("\u5c97\u4f4dID") Object roleId)
      移除指定岗位的缓存条目
      参数:
      roleId - 岗位 ID,为 null 或空字符串时不执行任何操作