直接跳到内容

查询增强

技术交流QQ群:3549030

分页查询增强

普通的需求利用Kongfu封装的queryPage即可,但有时候,遇到特殊情况需要对查询的结果做相关处理,比如某些字段不返回、做脱敏处理等,怎么办呢?我们的做法是采用增强的方式来达到目的。

下面我们用用户管理模块的分页查询为例来讲解用法。

用户管理分页查询

通过增强处理,实现两个需求:

  1. 将机构编码翻译成机构名称

  2. 移除password字段,不允许返回

代码实现如下:

java
@Api(value = "系统用户表", tags = "系统用户表接口")
@Path("/sys-user")
public class SysUserController extends KungfuController {
    public void queryPage() {
        // 通过增强处理
        // 1. 将机构编码翻译成机构名称
        // 2. 移除password字段,不允许返回
        renderJson(R.ok("data", sysUserService.wapperQueryPage(queryPage(SysUser.class))));
    }

}

java
public class SysUserService extends KungfuService<SysUser> {

    public Page<Record> wapperQueryPage(Page<Record> page) {
        Map<String, String> codeNameMap = new HashMap<>();
        // 需要查机构编码及机构名称
        Db.findByCache("sysOrg", "ogrCodeNameMap", "select org_name, org_code from sys_org").forEach(record -> codeNameMap.put(record.getStr("org_code"), record.getStr("org_name")));

        page.getList().forEach(record -> {
            // 将机构编码翻译成机构名称
            record.set("orgName", codeNameMap.get(record.getStr("orgCode")));
            // 移除password字段,不允许返回
            record.remove("password");
        });

        return page;
    }

}

创建应用

友情提示

  • 通过缓存方案,可以大大提高机构名称翻译的效率
  • 通过移除敏感字段,提高系统的安全性

你get到了吗?

查询增强已经加载完毕