12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
ADADADADAD
mysql数据库 时间:2024-11-29 10:09:21
作者:文/会员上传
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
首先明确为什么要使用分页查询,因为数据庞大,查询不可能全部显示在页面上,如果全部显示在页面上,也会造成查询速度慢的情况,所以分页查询解决了①数据查询;②性能优化,等(其他问题欢
以下为本文的正文内容,内容仅供参考!本站为公益性网站,复制本文以及下载DOC文档全部免费。
首先明确为什么要使用分页查询,因为数据庞大,查询不可能全部显示在页面上,如果全部显示在页面上,也会造成查询速度慢的情况,所以分页查询解决了①数据查询;②性能优化,等(其他问题欢迎补充)的问题。
分页查询也分为真分页和假分页:
真分页:基于数据库查出的数据直接分页显示,优点是改变数据库数据不会影响查询结果,缺点是速度稍慢。
假分页:将所有数据查询出的数据,封装到list集合缓存中,表现层方法调用执行。由于将数据封装为集合放入了内存中,所以速度较快,但缺点是数据库改变后,会出现不匹配的情况。
两种分页各有优缺点,小伙伴们视具体情况使用吧。
下面要介绍的就是真分页的方法:
1、建立JavaBean
import java.io.Serializable;/** * 用户实体类 * @author* */public class UserBean implements Serializable {/**用户ID*/private int id;/**用户名字*/private String name;public UserBean() {}public UserBean(int id, String name) {this.id = id;this.name = name;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic String toString() {return "UserBean [id=" + id + ", name=" + name + "]";}}
2、用于展示分页数据的JavaBean
/** * 用于展示分页数据的JavaBean对象 * @author * */import java.util.List;public class PagenationBean {/** 当前页数 */private Integer currPage;/** 总页数 */private Integer totalPage;/** 用于展示的table数据 */private List<UserBean> dataList;public Integer getCurrPage() {return currPage;}public void setCurrPage(Integer currPage) {this.currPage = currPage;}public Integer getTotalPage() {return totalPage;}public void setTotalPage(Integer totalPage) {this.totalPage = totalPage;}public List<StuBean> getDataList() {return dataList;}public void setDataList(List<StuBean> dataList) {this.dataList = dataList;}}
3、dao层实现类
@Overridepublic int getTotalCount() { //计算总的数据条数this.setConnection();int totalCount = 0;try {ps = con.prepareStatement("select count(*) from t_user");rs = ps.executeQuery();if (rs.next()) {totalCount = rs.getInt(1);}} catch (Exception e) {e.printStackTrace();} finally {this.closeConnection();}return totalCount;}@Overridepublic List<UserBean> getUserListByStartIndex(int StartIndex) { //根据传入的limit第一位参数得到该参数后面的10条数据List<UserBean> userList = new ArrayList<>();UserBean userBean= null;this.setConnection();int totalCount = 0;try {ps = con.prepareStatement("select * from t_user limit ? , 10");ps.setInt(1, StartIndex);rs = ps.executeQuery();while (rs.next()) {userBean= new StuBean();userBean.setId(rs.getInt("id"));userBean.setName(rs.getString("name"));stuList.add(userBean);}} catch (Exception e) {e.printStackTrace();} finally {this.closeConnection();}return userList;}
4、service层实现类
private IUserDao isd = new UserDaoImpl(); @Overridepublic int getTotalPage() {//得到数据据条数int totalCount = isd.getTotalCount();//计算总页数公式int totalPage = (totalCount + 10 -1)/10;return totalPage;} @Overridepublic List<UserBean> getUserListByCurrPage(int currPage) {//通过当前页计算起始索引int StartIndex = (currPage - 1) * 10;List<UserBean> userList = isd.getStuListByStartIndex(StartIndex);return userList;}
5、将查询出的数据放入页面展示就OK了。
以上方法中,分页显示的是10条数据,计算分析如下:
数据总条数: totalCount
每页显示条数: pageSize
总页数: totalPage
起始索引 StartIndex
当前页数 currPage
总页计算公式:
totalCount % pageSize
如果余数为0 ——> totalPage=totalCount / pageSize
如果余数不为0 ——> totalPage=totalCount / pageSize +1
得出结论:totalPage = (totalCount + pageSize -1)/pageSize
总结
以上所述是小编给大家介绍的MySql实现翻页查询功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
11-20
11-19
11-20
11-20
11-20
11-19
11-20
11-20
11-19
11-20
11-19
11-19
11-19
11-19
11-19
11-19