用java实现分页查询的方法
不懂用java实现分页查询的方法?其实想解决这个问题也不难,下面让小编带着大家一起学习怎么去解决,希望大家阅读完这篇文章后大所收获。
创新互联建站专注于连江网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供连江营销型网站建设,连江网站制作、连江网页设计、连江网站官网定制、微信小程序定制开发服务,打造连江网络公司原创品牌,更为您提供连江网站排名全网营销落地服务。
1.基本思路
我现阶段的分页查询的实现是基于sql语句的。
select * from user where id limit a, b
构造出相应的a和b就可以查询出想要的数据,在显示在页面上。重点是要构造出当前的页数,就要封装一个javaBean,存储有关分页的基本属性。
这样只需在service层计算想要的页数,并封装基本的信息,在查询出来显示在前端就可以了。
2.具体实现
1.定义JavaBean
public @Data class PageBeanimplements Serializable { private Integer page;//当前页数 private Integer limit;//每页显示数 private Integer totalPage;//总页数 private Integer total;//总记录数 private List pageRecode;//当前页面的数据集合 private List pages;//返回页数的集合,用于显示index页面的上一页、下一页 }
2.controller:
PageBeanpageBean = questionService.questionList(page);
返回一个QuestionDTO类型的JavaBean,其中包含了分页的一些信息和当前页面所要显示的数据集合。有关QuestionDTO:
public @Data class QuestionDTO { private Integer id; private String title; private String description; private Long gmtCreate; private Long GmtModified; private Integer creator; private Integer attentionCount; private Integer viewCount; private Integer likeCount; private String tag; private User user; }
3.调用的Service:
//查询所有的问题回显到index页面 public PageBeanquestionList(Integer page) { List list = new ArrayList<>(); PageBean pagesinfo = new PageBean<>(); //1.设置limit Integer limit = 5; pagesinfo.setLimit(limit); //2.设置总记录数 Integer total = questionMapper.fingCount(); pagesinfo.setTotal(total); //3.设置总的页数 Integer totalPage; if(total % limit == 0){ totalPage = total / limit; }else{ totalPage = total / limit + 1; } pagesinfo.setTotalPage(totalPage); //4.设置页数的集合 List pages = new ArrayList<>(); for(int i=1;i questions = questionMapper.questionList(page,limit); for(Question question : questions){ User user = userMapper.findById(question.getCreatar()); QuestionDTO questionDTO = new QuestionDTO(); BeanUtils.copyProperties(question,questionDTO); questionDTO.setUser(user); list.add(questionDTO); } pagesinfo.setPageRecode(list); return pagesinfo; }
在service层为PageBean的属性赋值,并且查询出相关的数据。上述代码中第5步如果有疑惑请参照多表联合查询的简单另类的实现方式。
4.mapper
//查询所有的问题并回显到index页面 @Select("select * from question where id limit #{page},#{limit}") ListquestionList(Integer page, Integer limit); //查询总的问题数 @Select("select count(id) from question") Integer fingCount();
做完这些,controller中的PageBean中就会封装有查询的数据。在返回前端显示就完成了。
5.前端代码
循环取出page。
另一种方式,使用mybatis-generator生成的分页查询方法
1.新建generatorConfig.xml配置文件‘
<?xml version="1.0" encoding="UTF-8"?>
注:
1.配置文件的名称固定是generatorConfig.xml
2.在控制台运行命令mvn -Dmybatis.generator.overwrite=true mybatis-generator:generate生成带有分页查询方法的代码
注:overwrite=true会覆盖掉前一次生成的代码,可根据实际需求进行调整。
3.举例:
QuestionExample example = new QuestionExample(); example.createCriteria(). andCreatorEqualTo(id); Listquestions = questionMapper.selectByExampleWithRowbounds(example, new RowBounds(page,limit));
设置好页数和每一页显示的个数,就可以返回对应的结果集。也同样可以做到分页。
持续更新~~~
感谢你能够认真阅读完这篇文章,希望小编分享用java实现分页查询的方法内容对大家有帮助,同时也希望大家多多支持创新互联,关注创新互联行业资讯频道,遇到问题就找创新互联,详细的解决方法等着你来学习!
本文标题:用java实现分页查询的方法
文章路径:http://scyanting.com/article/jjgjhp.html