最近做项目用到了模糊分页查询,做一些必要的笔记,一来是对自己学习的知识的巩固,二来对有同样问题的人有参考作用
我们几乎做的每一个项目都会用到分页查询,多条件动态查询或者这两者结合即多条件动态分页查询
1、先谈一下分页查询的思路
前端需要提供
page(页号)
pageSize(每页大小)
两个核心参数,由page
和pageSize
我们通过公式:
start=(page-1)*pageSize
获取到数据库查询的起始位置start
,然后通过:
<selectid="list"parameterType="Map"resultMap="ArcTypeResult">
select * from t_arcType<iftest="start!=null and size!=null">
limit #{start},#{size}</if></select>
就可查询到一页数据。
2、其次是多条件动态动态查询
多条件动态查询的思路十分简单,就是一个拼接查询条件
的过程,我们可以判断某项条件传来的参数是否为空,如果是空的话就不作操作,否则拼接条件。
具体实现可参考:springboot jpa实现多条件动态查询
3、最后是多条件动态动态分页查询
功能需求如图所示:
实现思路,在提供了page
和pageSize
的基础上,我们还需要提供查询条件title
,这样我们通过:
<selectid="list"parameterType="Map"resultMap="ArticleResult">
select * from t_article<where><iftest="title!=null and title!=''">
and title like #{title}</if></where>
order by crawlerDate desc<iftest="start!=null and size!=null">
limit #{start},#{size}</if></select>
查询到一页数据,需要注意的是:为了达到第二页数据依然是模糊分页查询的结果,在生成的底部分页导航栏的地址中,都应该附加参数'&title=xxx'
,比如:
href = "list?page=1&pageSize=10&title=浅谈java虚拟机"
总结
如有错误恳请指正,如有雷同纯属巧合