boot-mybatis分页插件使用

1 依赖引入

        <!-- spring-boot对mybatis的支持 -->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.3</version>
        </dependency>
        
        <!-- mybatis分页插件 -->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.3.0</version>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

2 配置文件

# 分页插件
pagehelper:
  helperDialect: mysql
  reasonable: true
  supportMethodsArguments: true
  params: count=countSql

3 代码

3.1 封装请求参数

@Data
public class PageRequest {

    /**
     * 当前页码
     */
    private int pageNum;

    /**
     * 每页数量
     */
    private int pageSize;
}

3.2 封装分页结果

@Data
public class PageResult {

    /**
     * 当前页码
     */
    private int pageNum;

    /**
     * 每页数量
     */
    private int pageSize;

    /**
     * 记录总数
     */
    private long totalSize;

    /**
     * 页码总数
     */
    private long totalPages;

    /**
     * 数据模型
     */
    private List<?> content;
}

3.3 分页工具类

public class PageUtil {

    /**
     * 分页工具类
     * @param pageInfo
     * @param pageRequest
     * @return
     */
    public static PageResult getPageResult(PageInfo<?> pageInfo, PageRequest pageRequest) {
        PageResult result = new PageResult();
        result.setPageNum(pageRequest.getPageNum());
        result.setPageSize(pageRequest.getPageSize());
        result.setTotalSize(pageInfo.getTotal());
        result.setTotalPages(pageInfo.getPages());
        result.setContent(pageInfo.getList());
        return result;
    }
}

3.4 Mapper层代码

public interface UserMapper{
    
    @Select("select * from tb_user")
    List<User> selectByPage();
}

3.5 Service层代码

public interface PageService{
    PageResult findByPage(PageRequest pageRequest);
}

3.6 ServiceImpl实现

public class PageServiceImpl implements PageService{
    
    	@Autowired
    	private UserMapper userMapper;
    
        @Override
   		public PageResult findByPage(PageRequest pageRequest) {

        //参数校验
        int pageNum = pageRequest.getPageNum();
        if (pageNum < 0) {
            pageNum = 0;
        }
        
        //参数校验
        int pageSize = pageRequest.getPageSize();
        if (pageSize < 0) {
            pageSize = 10;
        }

        //分页插件进行分页
        PageHelper.startPage(pageNum, pageSize);

        List<User> userList = userMapper.selectByPage();

        return PageUtil.getPageResult(new PageInfo<User>(userList), pageRequest);
    }
}
posted @ 2021-10-20 17:43  J-Brave  阅读(48)  评论(0)    收藏  举报