ssm实现分页查询(pagehelper和pageBean)

第一种pageBean

pageBean其实就是手写的pageBean类,并没有pagehelper那么好用,毕竟自己手写的,但基本的思想跟pagehelper一样的,不多说直接上代码

  1. 创建pageBean类和Book类
package com.nz.homework.domain.entity;

import lombok.Data;

import java.util.List;

@Data
public class PageBean<T> {
    private int totalCount; // 总记录数
    private int totalPage ; // 总页码
    private List<T> list ; // 每页的数据
    private int currentPage ; //当前页码
    private int rows;//每页显示的记录数
    //@Data注解已经生成getter和setter方法,不理解的小伙伴可以手动生成getter和setter的
}
package com.nz.homework.domain.entity;

import java.util.Date;
import lombok.Data;

@Data
public class Book {
    /**
    * 图书ID
    */
    private Integer bid;

    /**
    * 图书名称
    */
    private String name;

    /**
    * 作者
    */
    private String author;
    private Double price;

    private Date crtTime;
}

2.和平常一样在mapper(dao)层实现方法

import com.nz.homework.domain.entity.Book;
import org.apache.ibatis.annotations.Param;

import java.util.HashMap;
import java.util.List;

public interface BookMapper {
	//查找书本的总数
    int selectCount();
    //查找书本的全部
    List<Book> findByPage(@Param("start") Integer start,@Param("size") Integer size);

}

BookMappers.xml文件

    <select id="selectCount" resultType="int">
      SELECT count(*) FROM book WHERE flag = 0;
    </select>
  <select id="findByPage" resultMap="BaseResultMap">
    SELECT <include refid="Base_Column_List"/>
    FROM book WHERE flag = 0
    LIMIT #{start},#{size}
  </select>

3.在sevice层实现方法

public interface BookService {
//方法的集合放到pageBean里面
    PageBean<Book> findAll(int currentPage, int pageSize);
}

4.实现service层的方法


import javax.annotation.Resource;
import java.util.List;

@Service("/bookService")
public class BookServiceImpl implements BookService {
    @Resource
    BookMapper bookMapper;
    @Override
    public PageBean<Book> findAll(int currentPage, int pageSize) {
		//创建pageBean类
        PageBean<Book> pageBean = new PageBean<>();
        //设置当前页数
        pageBean.setCurrentPage(currentPage);
        pageBean.setRows(pageSize);
		//书本总数
        int totalCount = bookMapper.selectCount();
        pageBean.setTotalCount(totalCount);

		//总页数
        double num = Math.ceil((double) totalCount / pageSize);
        pageBean.setTotalPage((int)num);
		//开始页
        int start = (currentPage-1)*pageSize;
        //显示条数
        int size = pageBean.getRows();
        //拿到书本集合
        List<Book> byPage = bookMapper.findByPage(start,size);
        pageBean.setList(byPage);
//        //PageHelper插件实现
//        PageHelper.startPage(currentPage, pageSize);
//
//        List<Book> byPage = bookMapper.findByPage();
        return pageBean;
    }
}

5.controller层

package com.nz.homework.controller;

import com.github.pagehelper.PageInfo;
import com.nz.homework.domain.entity.Book;
import com.nz.homework.domain.entity.PageBean;
import com.nz.homework.service.BookService;
import com.nz.homework.utils.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;

@Slf4j
@RestController
@RequestMapping("/book")
public class BookController {
//Result<T>为工具类
    @Resource
    BookService bookService;
    @RequestMapping("/findAll")
    public Result findAll(@RequestParam(defaultValue = "1")int currentPage,@RequestParam(defaultValue = "5") int pageSize){
        try {
            PageBean<Book> bean = bookService.findAll(currentPage, pageSize);
            return Result.success(bean);
        } catch (Exception e) {
            log.error(e.getMessage());
        }
        return Result.error();
    }
}

工具类utils
在这里插入图片描述
工具类的代码

package com.nz.homework.utils;

import lombok.Data;

@Data
public class Result<T> {
    private String msg;
    private int status;
    private T data;
    public static Result success(Object obj){
        Result result = new Result();
        result.setMsg(Contants.SUCCESS_MSG);
        result.setStatus(Contants.SUCCESS_STATUS_200);
        result.setData(obj);
        return  result;
    }
    public static Result error(){
        Result result = new Result();
        result.setMsg(Contants.ERROR_MSG);
        result.setStatus(Contants.ERROR_STATUS_404);
        return result;
    }
}



package com.nz.homework.utils;

public class Contants {
    static final String SUCCESS_MSG = "success";
    static final String ERROR_MSG = "error";
    static final int SUCCESS_STATUS_200 = 200;
    static final int ERROR_STATUS_404 = 404;
}

接口查看的时候会显示结果,list就是你mapper层查询数据库的结果
在这里插入图片描述

第二种pageHelper

pagehelper肯定比自己写的方便很多,而且也很少代码,确实好用

  1. 导入maven依赖包
       <dependency>
      <groupId>com.github.pagehelper</groupId>
      <artifactId>pagehelper</artifactId>
      <version>5.1.2</version>
    </dependency>
    
  2. 在mybatis-config.xml文件里面配置:
    <!-- 引入 pageHelper插件 -->
    <plugins>
        <plugin interceptor="com.github.pagehelper.PageInterceptor">
            <!--reasonable:分页合理化参数,默认值为false。
                当该参数设置为 true 时,pageNum<=0 时会查询第一页,
                pageNum>pages(超过总数时),会查询最后一页。
                默认false 时,直接根据参数进行查询。-->
            <property name="reasonable" value="true"/>
        </plugin>
    </plugins>

  1. 在mapper层实现方法:
public interface BookMapper {
    List<Book> findByPage();
}

mybatis里面:

  <select id="findByPage" resultMap="BaseResultMap">
    SELECT <include refid="Base_Column_List"/>
    FROM book WHERE flag = 0
  </select>
  1. service层实现方法
package com.nz.homework.service.impl;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.nz.homework.domain.entity.Book;
import com.nz.homework.domain.entity.PageBean;
import com.nz.homework.mapper.BookMapper;
import com.nz.homework.service.BookService;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

@Service("/bookService")
public class BookServiceImpl implements BookService {
    @Resource
    BookMapper bookMapper;
    @Override
    public PageInfo<Book> findAll(int currentPage, int pageSize) {
        //page插件
        //一定要放在bookMapper.findByPage();的上面
        PageHelper.startPage(currentPage, pageSize);
//        PageInfo<Object> pageInfo = new PageInfo<>();
        List<Book> byPage = bookMapper.findByPage();

        return new PageInfo<>(byPage);
        }
    }

  1. controller层,其实都差不多:
package com.nz.homework.controller;

import com.github.pagehelper.PageInfo;
import com.nz.homework.domain.entity.Book;
import com.nz.homework.domain.entity.PageBean;
import com.nz.homework.service.BookService;
import com.nz.homework.utils.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;

@Slf4j
@RestController
@RequestMapping("/book")
public class BookController {
    @Resource
    BookService bookService;
    @RequestMapping("/findAll")
    public Result findAll(@RequestParam(defaultValue = "1")int currentPage,@RequestParam(defaultValue = "5") int pageSize){
        try {
            PageInfo<Book> bean = bookService.findAll(currentPage, pageSize);
            return Result.success(bean);
        } catch (Exception e) {
            log.error(e.getMessage());
        }
        return Result.error();
    }
}

在接口上查看的结果

对了很多东西,前端可以直接拿到所要的值进行分页,如果想详细了解pagehelper的,可以看看这位博主的文章
https://blog.csdn.net/fanfan_gaolin/article/details/85000253

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SSM(Spring + SpringMVC + MyBatis)中使用PageHelper进行分页查询是一种常见的做法。以下是使用PageHelper实现分页查询的步骤: 1. 首先,在项目的依赖管理中添加PageHelper的相关依赖。你可以在pom.xml文件中添加以下依赖: ```xml <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>版本号</version> </dependency> ``` 请注意,将“版本号”替换为PageHelper的最新版本号。 2. 在Spring配置文件(例如applicationContext.xml)中配置PageHelper的插件。添加以下配置: ```xml <bean id="pageHelper" class="com.github.pagehelper.PageHelper"> <property name="dialect" value="mysql"/> </bean> ``` 请注意,这里的dialect属性值可能需要根据你使用的数据库类型进行相应的设置。 3. 在你的DAO层接口中,添加使用PageHelper进行分页查询的方法。例如: ```java List<Entity> findEntitiesByPage(int pageNum, int pageSize); ``` 4. 在DAO层的XML映射文件中,使用PageHelper提供的插件进行分页查询。在查询语句之前添加以下配置: ```xml <select id="findEntitiesByPage" parameterType="map" resultMap="entityResultMap"> <!-- 此处为PageHelper提供的插件 --> <include refid="PageHelper.startPage"/> SELECT * FROM your_table <!-- 此处为PageHelper提供的插件 --> <include refid="PageHelper.endPage"/> </select> ``` 请注意,将"your_table"替换为你的实际表名,并且确保映射文件中已定义相应的结果映射。 5. 在Service层或Controller层调用DAO层的分页查询方法,传入页码和每页大小参数。 这样,你就可以使用PageHelper实现SSM分页查询了。记得在每次查询之后,需要手动清除ThreadLocal中的分页参数,以免对其他查询产生影响: ```java PageHelper.clearPage(); ``` 希望能对你有所帮助!如果还有其他问题,请随时提问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值