介绍
查询过滤器能够帮助开发者快速开发常见的查询功能,只需要按照约定编写查询的Key,后端Controller无需再手动解析,极大的提高了开发效率。
目前已支持的查询方式:模糊查询(LIKE)、等于查询(=)、间隔查询(BETWEEN-AND)、大于查询(>)、大于等于查询(>=)、小于查询(>)、小于等于查询(<=),未来将会按需加入更多的查询方式。
使用
页面上添加查询字段
<input name="search@like@username" class="layui-input" placeholder="输入账号"/>
其中的name就是用于做查询过滤的关键属性,name的值必须按约定的格式填写
格式为:_search@[type]@[column]_
- search: 固定格式,标识自动过滤字段
- @: 固定格式,用来分割关键字
- [type]: 查询类型,目前支持如下类型
- like: 模糊查询(前后全模糊),相当于
where username like '%测试%'
- eq: 等于查询,相当于
where username = '测试'
- between: 间隔查询,相当于
where number between 1 and 3
- lt: 小于查询,相当于
where number < 3
- lteq: 小于等于查询,相当于
where number <= 3
- gt: 大于查询,相当于
where number > 1
- gteq: 大于等于查询,相当于
where number >= 1
- like: 模糊查询(前后全模糊),相当于
- [column]: 查询的字段,注意事项如下:
- 值为JavaBean的属性名称,支持驼峰或下划线,根据[type]的不同,字段的值有略微差别
- like:、eq、lt、lteq、gt、gteq:直接填写JavaBean的属性名称,例如:
userId
、username
、sex
- between:通过
-
拼接最小值和最大值,注意两端有空格,示例:1 - 5
、2020-01-01 - 2020-02-01
- 支持多个字段的嵌套查询,以
|
分割,示例:username|phone|nickName
- 所有的关键字都可以在BaseQueryController中修改,如果修改了关键字,切记htmll页面上都要修改
示例:
- search@like@username
相当于:select * from table where username like '%?%'
- search@like@username|phone|nickName
相当于:select * from table where (username like '%?%' or phone ``like '%?%' or nick_name`` like '%?%')
- search@between@time
相当于:select * from time between ? and ?
- Controller类继承BaseQueryController
```java
@Controller
public class UserController extends BaseQueryController
{
}
3. 分页查询方法中调用createPageQuery或createQuery
```java
@ResponseBody
@RequestMapping("/page")
public PageResult<Role> page(HttpServletRequest request) {
PageQuery<Role> query = createPageQuery(request);
return new PageResult<Role>(query.getList(), query.getTotalRow());
}
@ResponseBody
@RequestMapping("/list")
public JsonResult list(HttpServletRequest request) {
Query<Role> query = createQuery(request);
List<Role> records = service.queryAll(query);
return JsonResult.ok().setData(records);
}
- 这样,一个使用查询过滤器的示例就完成了。启动项目后打开编写的页面,在输入框中输入关键字,点击查询按钮,表格中就会出现查询过滤后的数据