MySQL分页语句:LIMIT M,N

M:开始记录的索引。从0开始的

N:每次查询多少条。

每次查10条:

查第一页的:SELECT * FROM table LIMIT 0,10;

查第二页的:SELECT * FROM table LIMIT 10,10;

为了在页面更好的展示,并且为了减少内存的占用率,不是一次性将数据从数据库中查出来,而是分批次去查。一般如下图显示:

分页类Page.java:

package com.cmcc.imark.util;

import java.util.List;

public class Page {

//DAO可以查出来

private List records;//存放分页记录

//界面可以传过来

private int currentPageNum;//当前页码

//DAO可以查出来

private int totalRecords;//总记录条数

private int pageSize = 5;//每页显示的条数

//算出来:根据总记录条数来算

private int totalPage;//总页数

//算出来:根据当前页码来算

private int startIndex;//每页开始的记录的索引

//记录显示的页码

private int startPage;

private int endPage;

//用户查询分页数据的请求的URL

private String url;

public Page(int currentPageNum,int totalRecords){

this.currentPageNum = currentPageNum;

this.totalRecords = totalRecords;

//计算总页数

totalPage = totalRecords%pageSize==0?totalRecords/pageSize:(totalRecords/pageSize+1);

//计算开始记录的索引

startIndex = (currentPageNum-1)*pageSize;

//计算开始和结束页码

if(totalPage<=9){//不足9页

startPage = 1;

endPage = totalPage;

}else{

startPage = currentPageNum-4;

endPage = currentPageNum+4;

if(startPage<1){

startPage = 1;

endPage = startPage+8;

}

if(endPage>totalPage){

endPage = totalPage;

startPage = endPage-8;

}

}

}

}DAO:

public int getTotalRecord(String table) {//一般的话,不带参数

String sql = "select count(*) as count from "+table;

Map map = findFirst(sql);

Object count = null;

for(String key:map.keySet()){

count = map.get(key);

}

return Integer.parseInt(count.toString());

}

public List findPageRecords(Class className,String sql,int startIndex, int pageSize) {//一般的话,就只有startIndex及pageSize两个参数

return find(className, sql,startIndex,pageSize);

}service层代码:

public Page findPageReocords(Class className,String sql,String num,String table) {

int pageNum = 1;//默认的页码

if(num!=null&&!num.trim().equals("")){

pageNum = Integer.parseInt(num);

}

int totalRecords = pageDao.getTotalRecord(table);

Page page = new Page(pageNum, totalRecords);

//查询分页记录

List records = pageDao.findPageRecords(className,sql,page.getStartIndex(), page.getPageSize());

page.setRecords(records);

return page;

}

public Page findAll(String num) {//这是实际的业务层继承了分页的service类

String sql = "select id,prizeName from prize limit ?,?";

return findPageReocords(Prize.class,sql,num, "prize");

}

控制层:

@RequestMapping("/prizeListUi")

public String prizeListUi(Model model,String num){

System.out.println("prizeListUi");

Page page = this.prizeService.findAll(num);

page.setUrl("/prizeController/prizeListUi?");

model.addAttribute("page",page);

return "/back/prize/prizeList";

}前端页面的话,直接可以使用jstl取出page中的属性即可。

java 分页查询语句_Java实现分页查询相关推荐

  1. R语言构建仿真数据库(sqlite)并使用dplyr语法和SQL语法查询数据库、将dplyr语法查询语句翻译为SQL查询语句

    R语言构建仿真数据库(sqlite)并使用dplyr语法和SQL语法查询数据库.将dplyr语法查询语句翻译为SQL查询语句 目录

  2. 加sql查询语句导出_搞不懂这些查询语句,SQL简单查询也无法从入门到熟练

    大纲: 一.基本的查询语句 二.指定查询条件 三.注释和SQL语句注意事项 四.运算符 五.谓词 一.基本的查询语句 从表中选取数据时需要使用select语句,也就是只从表中选出(select)必要数 ...

  3. java中sql查询语句_JAVA中用 SQL语句操作小结

    1.添加记录(INSERT) 使用SQL语句的INSERT命令可以向数据库中插入记录,INSERT命令的基本形式为: INSERT INTO 表名 [(字段名1,字段名2-)] VALUES (值1, ...

  4. java 字符串模糊匹配_Java实现伪查询(全匹配+模糊匹配)

    Java实现伪查询(全匹配+模糊匹配) 在项目中一直习惯了框架下[springboot+mybatis]的增删改查,然后领导突然给了一个需求,让我先弄一些假数据出来,用于页面的展示,业务啥的也没说,咱 ...

  5. java数据库查询语句题_数据库查询语句面试

    Student(S#,Sname,Sage,Ssex) 学生表 Course(C#,Cname,T#) 课程表 SC(S#,C#,score) 成绩表 Teacher(T#,Tname) 教师表 问题 ...

  6. java操作mongodb查询总数_java操作mongodb——查询数据

    field为查询字段,value为查询值,也可以通过过滤器Filters,Filters提供了一系列查询条件的静态方法 相等 - = FindIterable iter = doc.find(new ...

  7. php 中 sql 查询语句怎么写,sql查询语句有哪些

    sql查询语句:1.查看表结构[SQL>DESC emp]:2.查询所有列[SQL>SELECT * FROM emp]:3.查询指定列:4.查询指定行:5.使用算术表达式:6.使用逻辑操 ...

  8. MySQL数据库高级SQL查询语句(单表查询,多表联合查询)

    目录 SQL查询语句 基础查询 条件查询 模糊查询 字段控制查询 排序 聚合函数 分组查询 having子句 limit分页查询 多表连接查询 SQL查询语句 数据查询语言. 数据库执行DQL语句不会 ...

  9. java中sql语句_java中sql语句的编写规则

    java中sql语句的编写规则 发布时间:2020-06-26 15:11:11 来源:亿速云 阅读:143 作者:Leah 这期内容当中小编将会给大家带来有关java中sql语句的编写规则,文章内容 ...

最新文章

  1. python 往excel 里面写数据
  2. mysql 5.7 多实例主从_mysql-5.7.20源码安装 + 多实例 + 主从复制
  3. BZOJ 2956 模积和(分块)
  4. No PIL installation found INFO:superset.utils.screenshots:No PIL installation found
  5. 洗被套的时候洗衣机里面不要再放其他东西
  6. matlab信息隐藏算法,实验四--基于DCT域的信息隐藏算法
  7. CCNA认证(2)--网络互联基础
  8. Android的MediaPlayer架构介绍
  9. C语言基础专题 - 指针(编写中)
  10. Vue 项目优化,持续更新...
  11. flask-login
  12. 频率采样型滤波器matlab,频率采样法设计带通滤波器matlab.doc
  13. 烽火通信 c语言 笔试,C语言嵌入式笔试题目及参考答案-烽火通信.doc
  14. 思科模拟器完成实验报告
  15. struts标签+jstl标签之国际化实例
  16. FPGA-10:设计个简单的cpu(真的简单!)
  17. 电阻、电容及电感的高频等效电路及特性曲线
  18. 禅道开源版16.2,解决LDAP插件无法使用的问题
  19. 2022年的第一个夕阳
  20. java中强耦合是什么意思_什么是Java程序的耦合

热门文章

  1. FX5U GX WORKS3平台编码器+modbus控制台达变频器 多段速 案例实现10个位置的定位
  2. 【LeetCode】62、63
  3. Delphi制作注册机
  4. 如何获取音乐的url地址
  5. 管理咨询的基本方法[z]
  6. 【隐马尔可夫模型】维特比算法matlab实现
  7. 彻底解决IOS HTML页面上光标跳行、光标不跟随页面问题
  8. Linux入门【第二回】 基本指令(相对路径,绝对路径)
  9. “数字裂变”宇宙,华为云与和伙伴组成“银河护卫队”
  10. C语言清除双斜杠注释,c语言删除注释 - 盖娅 - OSCHINA - 中文开源技术交流社区