0%

多条件模糊查询+分页

1:多条件查询

多条件的难点在于拼接条件和参入参数,在设计SQL时可以使用以下方法:

1
select * from book where 1=1 

如果有多个条件就使用if判断

1
2
3
4
5
List params=new ArrayList();
if(!Objects.isNull(bookType)){
sb.append(" AND book_info.book_type=? ");
params.add(bookType);
}

定义一个List保存条件。
判断条件是否存在,如果存在,拼接SQL语句,list加入条件,最后在传入list作为参数即可。

1
2
3
4
return qr.query(sb.toString(),
new BeanListHandler<>(BookInfo.class),
// Object... 底层就是数组,所以集合必须转换为数组,底层才能正常解析
params.toArray());

2:分页

分页需要定义页码,页大小,查询结果的总行数(新增一条SQL),还需要提供上一页,下一页等服务。
在查询SQL中需要加入分页LIMIT ?,?开始条数,页显示数量。
另外分页和多条件查询一样,都最好带上回显,即传递数据,使用域对象即可获取。