Browse Source

```

feat(setting): 添加跨库查询指定租户设置配置的功能

新增 getCrossDbSetting 方法,支持通过 XML 配置方式实现跨库查询指定租户的设置配置。该方法通过忽略租户拦截器,直接指定 tenant_id 进行数据查询,提升跨租户配置获取的灵活性和性能。
```
dev
科技小王子 6 days ago
parent
commit
b071c21098
  1. 9
      src/main/java/com/gxwebsoft/common/system/mapper/SettingMapper.java
  2. 9
      src/main/java/com/gxwebsoft/common/system/mapper/xml/SettingMapper.xml
  3. 6
      src/main/java/com/gxwebsoft/common/system/service/impl/SettingServiceImpl.java

9
src/main/java/com/gxwebsoft/common/system/mapper/SettingMapper.java

@ -37,4 +37,13 @@ public interface SettingMapper extends BaseMapper<Setting> {
@InterceptorIgnore(tenantLine = "true")
Setting getBySettingKeyIgnore(@Param("param") SettingParam param);
/**
* 跨库查询指定租户的设置配置
* @param settingKey 设置键
* @param tenantId 租户ID
* @return Setting
*/
@InterceptorIgnore(tenantLine = "true")
Setting getCrossDbSetting(@Param("settingKey") String settingKey, @Param("tenantId") Integer tenantId);
}

9
src/main/java/com/gxwebsoft/common/system/mapper/xml/SettingMapper.xml

@ -30,4 +30,13 @@
<include refid="selectSql"></include>
</select>
<!-- 跨库查询指定租户的设置配置 -->
<select id="getCrossDbSetting" resultType="com.gxwebsoft.common.system.entity.Setting">
SELECT a.*
FROM gxwebsoft_core.sys_setting a
WHERE a.setting_key = #{settingKey}
AND a.tenant_id = #{tenantId}
AND a.deleted = 0
</select>
</mapper>

6
src/main/java/com/gxwebsoft/common/system/service/impl/SettingServiceImpl.java

@ -117,10 +117,8 @@ public class SettingServiceImpl extends ServiceImpl<SettingMapper, Setting> impl
final List<Setting> list = list(new LambdaQueryWrapper<Setting>().eq(Setting::getTenantId, tenantId));
System.out.println("跨租户获取指定租户的设置配置 list = " + list);
// 使用跨租户查询,指定租户ID
Setting setting = this.getOne(new QueryWrapper<Setting>()
.eq("setting_key", key)
.eq("tenant_id", tenantId), false);
// 使用跨租户查询,指定租户ID - 通过XML方式查询跨库数据(方式二:更简洁的方法)
Setting setting = baseMapper.getCrossDbSetting(key, tenantId);
System.out.println("跨租户查询结果: " + setting);

Loading…
Cancel
Save