MyBatis-Plus实现2种分页方法(QueryWrapper查询分页和SQL查询分页)

目录
  • 1 MyBatisPlusConfig
  • 2 UserPagination
  • 3 Mapper
    • 3.1 UserMapper.java
    • 3.2 UserMapper.xml
  • 4 Service
    • 4.1 UserService
    • 4.2 UserServiceImpl
  • 5 UserController
  • 6 调试结果
    • 6.1 QueryWrapper查询分页
    • 6.2 SQL查询分页

1 MyBatisPlusConfig

MyBatisPlus配置类。

package com.config;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.*;

/**
 * MyBatisPlus配置类
 */
@Configuration
public class MyBatisPlusConfig {

    /**
     * MyBatisPlus拦截器(用于分页)
     */
    @Bean
    public MybatisPlusInterceptor paginationInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        //添加MySQL的分页拦截器
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        return interceptor;
    }
}

2 UserPagination

用户查询条件类。

package com.entity;

import lombok.Data;

/**
 * 查询条件
 */
@Data
public class UserPagination {
    /**
     * 当前页号
     */
    private int currentPage;
    /**
     * 每页显示条数
     */
    private int pageSize;
}

3 Mapper

3.1 UserMapper.java

package com.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.entity.UserEntity;
import com.entity.UserPagination;
import org.apache.ibatis.annotations.Mapper;

/**
 * 用户信息dao层
 */
@Mapper
public interface UserMapper extends BaseMapper<UserEntity> {
    /**
     * 获取用户信息(SQL查询分页)
     *
     * @param page 分页条件
     * @return
     */
    Page<UserEntity> getUserListBySQLPage(Page<UserEntity> page);
}

3.2 UserMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.mapper.UserMapper">
    <select id="getUserListBySQLPage" resultType="com.entity.UserEntity">
        SELECT *
        from users
    </select>
</mapper>

4 Service

4.1 UserService

package com.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.entity.*;

public interface UserService extends IService<UserEntity> {
    /**
     * 获取用户信息(QueryWrapper查询分页)
     *
     * @param pagination 查询条件
     * @return
     */
    Page<UserEntity> getUserListByQueryWrapperPage(UserPagination pagination);

    /**
     * 获取用户信息(SQL查询分页)
     *
     * @param pagination 查询条件
     * @return
     */
    Page<UserEntity> getUserListBySQLPage(UserPagination pagination);
}

4.2 UserServiceImpl

package com.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.entity.*;
import com.mapper.UserMapper;
import com.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, UserEntity> implements UserService {
   @Autowired
   private UserMapper userMapper;
    /**
     * 获取用户信息(QueryWrapper查询分页)
     *
     * @param pagination 查询条件
     * @return
     */
    public Page<UserEntity> getUserListByQueryWrapperPage(UserPagination pagination) {
        QueryWrapper<UserEntity> queryWrapper = new QueryWrapper<>();
        Page<UserEntity> page = new Page<>(pagination.getCurrentPage(), pagination.getPageSize());
        return this.page(page, queryWrapper);
    }

    /**
     * 获取用户信息(SQL查询分页)
     *
     * @param pagination 查询条件
     * @return
     */
    @Override
    public Page<UserEntity> getUserListBySQLPage(UserPagination pagination) {
        Page<UserEntity> page = new Page<>(pagination.getCurrentPage(), pagination.getPageSize());
        return userMapper.getUserListBySQLPage(page);
    }
}

5 UserController

调试代码。

package com.controller;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.entity.*;
import com.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RestController
public class UserController {
    @Autowired
    private UserService userService;

    /**
     * 获取用户信息(QueryWrapper查询分页)
     *
     * @return
     */
    @GetMapping("/getUserListByQueryWrapperPage")
    public Page<UserEntity> getUserListByQueryWrapperPage(UserPagination pagination) {
        return userService.getUserListByQueryWrapperPage(pagination);
    }

    /**
     * 获取用户信息(SQL查询分页)
     *
     * @return
     */
    @GetMapping("/getUserListBySQLPage")
    public Page<UserEntity> getUserListBySQLPage(UserPagination pagination) {
        return userService.getUserListBySQLPage(pagination);
    }

}

6 调试结果

6.1 QueryWrapper查询分页

6.2 SQL查询分页

注:

更多MyBatis-Plus的配置请查看以下博客。

Spring Boot 配置MyBatis-Plus(实现查询、新增、更新、删除)

到此这篇关于MyBatis-Plus实现2种分页方法(QueryWrapper查询分页和SQL查询分页)的文章就介绍到这了,更多相关MyBatis-Plus 分页内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • MyBatis-Plus结合Layui实现分页方法

    MyBatis-Plus 使用简单,内置通用 Mapper.通用 Service,仅仅通过少量配置,即可实现单表大部分 CRUD 操作.下面介绍使用 service 中的 page 方法结合 Layui 前端框架,较快速的实现分页效果. 在 pom.xml 中引入依赖 <!-- mybatisplus --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus

  • mybatis-plus分页查询的实现示例

    按照官方文档进行的配置:快速开始|mybatis-plus 引入依赖: <!-- 引入mybatisPlus --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.2.0</version> </dependency> <!--

  • MyBatis-Plus分页插件不生效的解决方法

    描述 项目中用到boot 整合 mybatis-plus , 个人在使用分页条件查询的时候一直查不出 total, pages, 终于找到原因了. 环境 <springboot.version>2.1.5.RELEASE</springboot.version> <mybatisplus.version>3.1.1</mybatisplus.version> 配置 1.自定义MybatisPlusConfig 配置分页插件 package com.eyela

  • Mybatis-Plus 多表联查分页的实现代码

    上一节,简单讲述了 Mybatis-Plus 搭建与使用入门,这一节,简单讲一下如何使用 MP 实现多表分页. 分析 使用的工程,依旧是 spring-boot,关于分页,官网给出了一个单表的demo,其实多表分页实现原理相同,都是通过 mybatis 的拦截器 (拦截器做了什么?他会在你的 sql 执行之前,为你做一些事情,例如分页,我们使用了 MP 不用关心 limit,拦截器为我们拼接.我们也不用关心总条数,拦截器获取到我们 sql 后,拼接 select count(*) 为我们查询总条

  • springboot整合mybatis-plus实现多表分页查询的示例代码

    1.新建一个springboot工程 2.需要导入mybatis和mybatis-plus的依赖文件 <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.1.1</version> </dependency> <dependency> &l

  • 解决Mybatis-Plus操作分页后数据失效问题

    业务场景 我们知道在使用PageHelper分页插件时,会对执行PageHelper.startPage(pageNum, pageSize);方法后的第一条查询语句进行分页操作.在开发中总会遇到这样的业务情景,在进行分页查询后,需要对获得的列表数据包装成另一种类型,此时需要对新类型的列表进行分页,然而由于PageInfo<T>因为泛型的原因,导致处理后的列表不能加入到该类中. 如,我在数据库分页后查询到的类为PageInfo<User>,此时改类中的list属性为User,在当前

  • oracle+mybatis-plus+springboot实现分页查询的实例

    今天蠢了一上午才弄出这玩意,话不多说上代码! 1.建一个配置类 package com.sie.demo.config; import com.baomidou.mybatisplus.annotation.DbType; import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; import com.baomidou.mybatisplus.extension.plugins.PaginationInte

  • springboot整合mybatis-plus 实现分页查询功能

    建一个config类 @Configuration public class MybatisPlusConfig { @Bean public PaginationInterceptor paginationInterceptor(){ return new PaginationInterceptor(); } } 编写controller post /article/search/{page}/{size} @PostMapping("search/{page}/{size}") p

  • MyBatis-Plus实现2种分页方法(QueryWrapper查询分页和SQL查询分页)

    目录 1 MyBatisPlusConfig 2 UserPagination 3 Mapper 3.1 UserMapper.java 3.2 UserMapper.xml 4 Service 4.1 UserService 4.2 UserServiceImpl 5 UserController 6 调试结果 6.1 QueryWrapper查询分页 6.2 SQL查询分页 1 MyBatisPlusConfig MyBatisPlus配置类. package com.config; imp

  • MybatisPlus实现分页查询和动态SQL查询的示例代码

    目录 一.描述 二.实现方式 三. 总结 一.描述 实现下图中的功能,分析一下该功能,既有分页查询又有根据计划状态.开始时间.公司名称进行动态查询. 二.实现方式 Controller层 /** * @param userId 专员的id * @param planState 计划状态 * @param planStartTime 计划开始时间 * @param emtCode 公司名称-分身id * @return java.util.List<com.hc360.crm.entity.po.

  • SQL SERVER 2008 中三种分页方法与比较

    建立表: 复制代码 代码如下: CREATE TABLE [TestTable] ( [ID] [int] IDENTITY (1, 1) NOT NULL , [FirstName] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NULL , [LastName] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NULL , [Country] [nvarchar] (50) COLLATE Chinese_PRC_

  • 浅谈基于SQL Server分页存储过程五种方法及性能比较

    在SQL Server数据库操作中,我们常常会用到存储过程对实现对查询的数据的分页处理,以方便浏览者的浏览. 创建数据库data_Test : create database data_Test GO use data_Test GO create table tb_TestTable --创建表 ( id int identity(1,1) primary key, userName nvarchar(20) not null, userPWD nvarchar(20) not null, u

  • Hibernate分页的两种实现方法

    本文实例讲述了Hibernate分页的两种实现方法.分享给大家供大家参考,具体如下: 1. criteria分页 public Page getPage(int currentPage,int pageSize,Criterion...crts){ Criteria c=session.createCriteria(House.class); List list=null; for (int i = 0; i < crts.length; i++) { c.add(crts[i]); } c.s

  • spring与mybatis三种整合方法

    1.采用MapperScannerConfigurer,它将会查找类路径下的映射器并自动将它们创建成MapperFactoryBean. spring-mybatis.xml: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3

  • 一种理论上最快的Web数据库分页方法

    出了一种理论上最佳的分页方法,本篇我们就来详细说说这种最佳的分页方法. 一:构思.  在设计Web数据库时,如果我们要编历每一条纪录,那么只有采取分页模式才可以使Web数据库尽快,尽好的呈现给终端用户,也不会因为8秒原则而使用户失去浏览该页的兴趣.但是即使采取分页的办法,当出现多纪录的数据库时,也难免会使我们的用户感到翻页时速度太慢.就如同我的上篇文章说的那样,几乎上一片文章的三种分页方法都有一些缺陷.那么,我们如何做到能让数据库每次就取我们需要的纪录,这个很好实现,有游标返回多个纪录集就可以实

  • 五种SQL Server分页存储过程的方法及性能比较

    在SQL Server数据库操作中,我们常常会用到存储过程对实现对查询的数据的分页处理,以方便浏览者的浏览.本文我们总结了五种SQL Server分页存储过程的方法,并对其性能进行了比较,接下来就让我们来一起了解一下这一过程. 创建数据库data_Test : create database data_Test GO use data_Test GO create table tb_TestTable --创建表 ( id int identity(1,1) primary key, userN

  • MySQL中SQL分页查询的几种实现方法及优缺点

    [SQL]SQL分页查询总结 开发过程中经常遇到分页的需求,今天在此总结一下吧. 简单说来方法有两种,一种在源上控制,一种在端上控制.源上控制把分页逻辑放在SQL层:端上控制一次性获取所有数据,把分页逻辑放在UI上(如GridView).显然,端上控制开发难度低,适于小规模数据,但数据量增大时性能和IO消耗无法接受:源上控制在性能和开发难度上较为平衡,适应大多数业务场景:除此之外,还可以根据客观情况(性能要求,源与端的资源占用等)在源和端之间加一层,应用特殊算法和技术进行处理.以下主要讨论源上,

  • Mybatis 动态SQL的几种实现方法

    案例sql脚本 DROP DATABASE IF EXISTS `javacode2018`; CREATE DATABASE `javacode2018`; USE `javacode2018`; DROP TABLE IF EXISTS t_user; CREATE TABLE t_user( id int AUTO_INCREMENT PRIMARY KEY COMMENT '用户id', name VARCHAR(32) NOT NULL DEFAULT '' COMMENT '用户名'

随机推荐