外观
切面参数增强
技术交流QQ群:3549030
分页查询切面参数增强
普通的需求利用Kongfu封装的queryPage即可,但有时候,遇到特殊情况需要对查询的结果做相关处理,比如根据需要做一些限定条件,这个条件不通过前端,在后端加入呢?我们的做法是采用切面增强的方式来达到目的。
下面我们用用户管理模块的分页查询为例来讲解用法。
用户管理分页查询
通过切面增强处理,实现一个需求:不允许查询管理员用户信息,防止数据被随意设置,而造成系统无法访问。
代码实现如下:
java
@Api(value = "系统用户表", tags = "系统用户表接口")
@Path("/sys-user")
public class SysUserController extends KungfuController {
public void queryPage() {
// 通过切面增强处理
QueryCondition qc = toDTO(QueryCondition.class);
// 这里使用了三元组数据结构(字段名,字段值,条件类型)
qc = wapperQueryCondition(qc, new Triple<>("userCode", "admin", "neq"));
renderJson(R.ok("data", queryPage(SysUser.class, qc)));
}
}
Kungfu封装了两种形式,单个条件增强和批量条件增强,上面例子属于单个条件增强,批量条件增强用法如下:
java
public QueryCondition wapperQueryCondition(QueryCondition qc, List<Triple<String, String, String>> paramTripleList);
三元组结构在有些场景下还是非常有用的,是提高代码的复用的一个典型案例。实现类如下:
java
public class Triple<T, U, V> {
private final T first;
private final U second;
private final V third;
public Triple(T first, U second, V third) {
this.first = first;
this.second = second;
this.third = third;
}
public T getFirst() { return first; }
public U getSecond() { return second; }
public V getThird() { return third; }
}
有没有发现,很简单的样子。