介绍

查询过滤器能够帮助开发者快速开发常见的查询功能,只需要按照约定编写查询的Key,后端Controller无需再手动解析,极大的提高了开发效率。
目前已支持的查询方式:模糊查询(LIKE)、等于查询(=)、间隔查询(BETWEEN-AND)、大于查询(>)、大于等于查询(>=)、小于查询(>)、小于等于查询(<=),未来将会按需加入更多的查询方式。

使用

  1. 页面上添加查询字段

    1. <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
    • [column]: 查询的字段,注意事项如下:
      • 值为JavaBean的属性名称,支持驼峰或下划线,根据[type]的不同,字段的值有略微差别
      • like:、eq、lt、lteq、gt、gteq:直接填写JavaBean的属性名称,例如:userIdusernamesex
      • between:通过-拼接最小值和最大值,注意两端有空格,示例:1 - 52020-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 ?

  1. Controller类继承BaseQueryController ```java @Controller public class UserController extends BaseQueryController {

}

  1. 3. 分页查询方法中调用createPageQuerycreateQuery
  2. ```java
  3. @ResponseBody
  4. @RequestMapping("/page")
  5. public PageResult<Role> page(HttpServletRequest request) {
  6. PageQuery<Role> query = createPageQuery(request);
  7. return new PageResult<Role>(query.getList(), query.getTotalRow());
  8. }
  1. @ResponseBody
  2. @RequestMapping("/list")
  3. public JsonResult list(HttpServletRequest request) {
  4. Query<Role> query = createQuery(request);
  5. List<Role> records = service.queryAll(query);
  6. return JsonResult.ok().setData(records);
  7. }
  1. 这样,一个使用查询过滤器的示例就完成了。启动项目后打开编写的页面,在输入框中输入关键字,点击查询按钮,表格中就会出现查询过滤后的数据