java 分页查询语句_Java实现分页查询

MySQL分页语句:LIMIT M,N

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

N:每次查询多少条。

每次查10条:

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

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

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

0818b9ca8b590ca3270a3433284dd417.png

分页类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中的属性即可。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MyBatis-Plus提供了非常方便的分页查询功能,可以直接使用Page类来进行分页查询。 使用MyBatis-Plus的分页查询,需要进行以下步骤: 1. 引入MyBatis-Plus的依赖:在pom.xml中添加以下依赖: ``` <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.0</version> </dependency> ``` 2. 定义实体类:定义需要进行分页查询的实体类,并使用注解@TableField进行字段映射。 3. 定义Mapper接口:定义Mapper接口,并继承BaseMapper类,继承BaseMapper类后,MyBatis-Plus会自动提供一些基本的CRUD操作。 ``` public interface UserMapper extends BaseMapper<User> {} ``` 4. 分页查询:在Service层中调用分页查询方法,使用Page对象设置分页参数,然后调用selectPage方法进行分页查询。 ``` @Service public class UserServiceImpl implements UserService { @Autowired private UserMapper userMapper; @Override public Page<User> getUserList(int pageNum, int pageSize) { Page<User> page = new Page<>(pageNum, pageSize); return userMapper.selectPage(page, null); } } ``` 如果需要自定义sql分页,可以在xml中使用MyBatis的分页插件进行分页查询。 1. 引入分页插件:在pom.xml中添加以下依赖: ``` <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>5.1.10</version> </dependency> ``` 2. 配置分页插件:在MyBatis的配置文件中配置分页插件。 ``` <plugins> <plugin interceptor="com.github.pagehelper.PageInterceptor"> <property name="dialect" value="mysql"/> </plugin> </plugins> ``` 3. 自定义sql分页查询:在xml中使用分页插件的PageHelper.startPage方法进行分页查询。 ``` <select id="getUserList" resultMap="userMap"> select * from user <where> <if test="name != null"> and name like concat('%',#{name},'%') </if> </where> order by id desc </select> ``` ``` @Service public class UserServiceImpl implements UserService { @Autowired private UserMapper userMapper; @Override public PageInfo<User> getUserList(int pageNum, int pageSize, String name) { PageHelper.startPage(pageNum, pageSize); List<User> userList = userMapper.getUserList(name); return new PageInfo<>(userList); } } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值