【SSM专栏二】PageHelper的使用

目录

一、导入pom

二、配置PageHelper拦截器

三、在SqlSessionFactoryBean中注入属性

四、controller层:

五、service层:

 

一、导入pom

<!-- mybatis分页插件依赖 -->
    <dependency>
      <groupId>com.github.pagehelper</groupId>
      <artifactId>pagehelper</artifactId>
      <version>4.0.0</version>
    </dependency>

二、配置PageHelper拦截器

<!-- 配置pageHelp的拦截器 -->
    <bean id="plugin" class="com.github.pagehelper.PageHelper">
        <property name="properties">
            <value>helperDialect=mysql</value>
        </property>
    </bean>

三、在SqlSessionFactoryBean中注入属性

    <!-- spring和MyBatis完美整合,不需要mybatis的配置映射文件 -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <!-- 自动扫描mapping.xml文件 -->
        <property name="mapperLocations" value="classpath:mapper/*.xml"></property>
        <!-- 配置分页插件 -->
        <property name="plugins">
            <list>
                <ref bean="plugin"></ref>
            </list>
        </property>
    </bean>

四、controller层:

@RestController
@RequestMapping("student")
public class StudentController {

    @Autowired
    StudentService services;

    @RequestMapping("queryByPage")
    public ModelAndView queryByPage1(@RequestParam(defaultValue = "1") Integer page , @RequestParam(defaultValue="2") Integer pageSize){
        PageHelper.startPage(page,pageSize);//开始分页
        List<Student> list = services.getStudentAll();
        PageInfo<Student> pageInfo = new PageInfo<Student>(list);//封装分页数据

        ModelAndView mav = new ModelAndView();
        mav.setViewName("pages/students");
        mav.addObject("pageInfo", pageInfo);

        return mav;
    }

    @RequestMapping("queryByPage2")
    public PageInfo<Student> queryByPage2(@RequestParam(defaultValue = "1") Integer page , @RequestParam(defaultValue="10") Integer pageSize){
        PageHelper.startPage(page,pageSize);//开始分页
        List<Student> list = services.getStudentAll();
        PageInfo<Student> pageInfo = new PageInfo<Student>(list);//封装分页数据
        return pageInfo;
    }
}

五、service层:

@Service
public class StudentServiceImpl implements StudentService {

    @Autowired
    private StudentMapper studentMapper;

    @Override
    public List<Student> getStudentAll() {
        return studentMapper.selectByExample(new StudentExample());
    }

    /**
     * 静态方法startPage
     */
    @Override
    public List<Student> getStudentListByPage(StudentExample StudentExample, Integer pageNum, Integer pageSize) {
        //  在你需要进行分页的 MyBatis 查询方法前调用 PageHelper.startPage 静态方法即可,紧跟在这个方法后的第一个MyBatis 查询方法会被进行分页。
        //  只要你可以保证在 PageHelper 方法调用后紧跟 MyBatis 查询方法,这就是安全的
        PageHelper.startPage(pageNum, pageSize);
        return studentMapper.selectByExample(StudentExample);
    }

    /**
     * 分页时,实际返回的结果list类型是Page<E>,如果想取出分页信息,需要强制转换为Page<E>
     * 因为  public class Page<E> extends ArrayList<E> implements Closeable
     */
    @Override
    public Page<Student> getStudentListByPage1(StudentExample StudentExample, Integer pageNum, Integer pageSize) {
        PageHelper.startPage(pageNum, pageSize);
        List<Student> list = studentMapper.selectByExample(StudentExample);
        if (null != list) {
            Page<Student> page = (Page<Student>) list;
            System.out.println(page);
            return page;
        }
        return null;
    }
}

六、jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<p>当前${pageInfo.pageNum}页,共${pageInfo.pages}页,总共${pageInfo.total}条记录</p>
<a href="queryByPage?page=${pageInfo.firstPage}">第一页</a>
<c:if test="${pageInfo.hasPreviousPage}">
    <a href="queryByPage?page=${pageInfo.pageNum-1}">上一页</a>
</c:if>
<c:if test="${pageInfo.hasNextPage}">
    <a href="queryByPage?page=${pageInfo.pageNum+1}">下一页</a>
</c:if>
<a href="queryByPage?page=${pageInfo.lastPage}">最后一页</a>

</body>
</html>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值