SpringBoot+Mybatis集成pagehelper分页插件

目录

 

1、说明

2、配置pom文件

3、增加配置文件

4、在controller中增加分页查询请求

5、疑惑


1、说明

后台使用springboot2.0+Mybatis已经搭建好的环境,要在这个基础上实现后端数据查询分页。

分页当然也可以自己写,不过有现成的插件,只需要几步简单的集成就行,而且截止目前感觉还可以,因而有此篇记录。

2、配置pom文件

与其他springboot集成插件一样,先导入pageHelper依赖包,在pom.xml 的 dependencies标签中增加如下:

        
        
            com.alibaba
            druid-spring-boot-starter
            1.1.10
        
        
        
            com.github.pagehelper
            pagehelper-spring-boot-starter
            1.2.5
        

3、增加配置文件

同样,在application中配置分页插件需要的相关配置


spring:
  datasource:
#    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/apidemo?serverTimezone=UTC&useSSL=true&useUniCode=true&characterEncoding=UTF-8
    username: root
    password: root
    # 使用druid数据源
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.cj.jdbc.Driver
    filters: stat
    maxActive: 20
    initialSize: 1
    maxWait: 60000
    minIdle: 1
    timeBetweenEvictionRunsMillis: 60000
    minEvictableIdleTimeMillis: 300000
    validationQuery: select 'x'
    testWhileIdle: true
    testOnBorrow: false
    testOnReturn: false
    poolPreparedStatements: true
    maxOpenPreparedStatements: 20

4、在controller中增加分页查询请求

     注意:这里我认为你的后端环境之前就是好的,只是没有分页,也就是说下面代码中的sysUserService.selectUserList()

    方法就是最基本的一个全量查询的mybatis语句

  /**
     * 分页查询
     * @param pageNum 当前页数
     * @param pageSize 每页的记录条数
     * @return
     */
    @GetMapping("/findUserListByPage")
    public PageInfo getUserBySearch(
            @RequestParam("pageNum") int pageNum,
            @RequestParam("pageSize") int pageSize) {
        // TODO Auto-generated method stub
        PageHelper.startPage(pageNum,pageSize);
        List list= sysUserService.selectUserList();
        PageInfo pageInfo = new PageInfo(list);
        pageInfo.toString();
        return pageInfo;
    }

 还是给大家把它补全...

@Service
@Transactional
public class SysUserServiceImpl implements SysUserService {

    @Autowired
    private SysUserMapper sysUserMapper;
    @Override
    public List selectUserList() {
        return sysUserMapper.selectUserList();
    }

    @Override
    public int addUser(SysUser user) {
        return sysUserMapper.addUser(user);
    }

    @Override
    public int updateUserById(SysUser user) {
        return sysUserMapper.updateUserById(user);
    }

    @Override
    public int deleteUserById(String id) {
        return sysUserMapper.deleteUserById(id);
    }

    @Override
    public SysUser findById(String id) {
        return sysUserMapper.findById(id);
    }
}
package com.shijia.apidemo.dao;

import com.shijia.apidemo.pojo.SysUser;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 用户dao层接口
 */
@Mapper
@Repository
public interface SysUserMapper {
    /**
     * 查询列表
     * @return
     */
    List selectUserList();

    /**
     * 添加用户
     * @param user
     * @return
     */
    int addUser(SysUser user);

    /**
     * 更新用户
     * @param user
     * @return
     */
    int updateUserById(SysUser user);

    /**
     * 删除用户
     * @param id
     * @return
     */
    int deleteUserById(String id);

    SysUser findById(String id);

}

SysUserMapper.xml





    
    
        
        
        
        
      
    
    






还有一点,我没有自己写PageInfo,就用的pageHelper自身的PageInfo,看看其返回的格式:

SpringBoot+Mybatis集成pagehelper分页插件_第1张图片

 

最终效果:

SpringBoot+Mybatis集成pagehelper分页插件_第2张图片

5、疑惑

其实看看其代码,刚开始发现就是在我们调用自己的未分页查询之前,开启了pagehelper的一行代码

SpringBoot+Mybatis集成pagehelper分页插件_第3张图片

所有就想,那是不是我后端还是做了全量查询,只是返给前端的数据是按照分页返回的,如果是这样,那也太那啥了,这个插件也就没有用的价值了,于是开启了日志看了看后台打印的sql

 

SpringBoot+Mybatis集成pagehelper分页插件_第4张图片

这下明白了,查询的时候本质和我们做分页查询一样,使用了sql 的limit语句,然后会查询一个总数,这下就放心了。。。。

你可能感兴趣的:(Mybatis,spingboot,mybatis,mysql,java)