MyBatis-Plus实现对查询结果进行分页的基本步骤

 更新时间:2024年08月28日 11:11:57   作者:威哥爱编程  
MyBatis-Plus 是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生,MyBatis-Plus 支持多种数据库的分页查询,其分页功能是通过 Page 类实现的,本文介绍了使用 MyBatis-Plus 实现分页查询的基本步骤,需要的朋友可以参考下

MyBatis-Plus 是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。MyBatis-Plus 支持多种数据库的分页查询,其分页功能是通过 Page 类实现的。

以下是使用 MyBatis-Plus 实现分页查询的基本步骤:

  • 添加依赖:首先确保你的项目中已经添加了 MyBatis-Plus 的依赖。

  • 配置 Mapper 接口:创建一个 Mapper 接口,该接口继承自 BaseMapper<T>,其中 T 是你的实体类。

  • 创建 Service:在 Service 层中,你可以注入 Mapper 接口,并调用其分页查询的方法。

  • 使用 Page 类:创建一个 Page 对象,设置当前页码和每页显示的记录数。

  • 调用分页查询:在 Mapper 接口中定义一个分页查询的方法,使用 @Select 注解或者 XML 映射文件来指定查询语句。然后在 Service 层调用这个方法,传入 Page 对象。

  • 处理结果:分页查询的结果会返回一个 PageInfo<T> 对象,其中包含了当前页的数据和分页信息。

好的,用一个案例来具体看一下,如何使用 MyBatis-Plus 进行分页查询。假设我们有一个需求是,在用户管理系统,需要对用户列表进行分页显示。

  • 实体类(User.java)
public class User {
    private Long id;
    private String name;
    private Integer age;
    private String email;
    // 省略其他字段和getter/setter方法
}
  • Mapper 接口(UserMapper.java)
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

public interface UserMapper extends BaseMapper<User> {
    // 这里可以添加自定义的查询方法,例如按状态查询
    Page<User> selectByState(Page<User> page, @Param("state") Integer state);
}
  • Mapper XML 文件(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.example.mapper.UserMapper">
    <!-- 按状态查询用户的分页结果 -->
    <select id="selectByState" resultType="com.example.entity.User">
        SELECT * FROM user WHERE state = #{state}
    </select>
</mapper>
  • Service 接口(IUserService.java)
import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.example.entity.User;

public interface IUserService extends IService<User> {
    IPage<User> getUserListByState(Integer state, int current, int size);
}
  • Service 实现(UserServiceImpl.java)
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.example.mapper.UserMapper;
import com.example.entity.User;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springframework.stereotype.Service;

@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IUserService {

    @Override
    public IPage<User> getUserListByState(Integer state, int current, int size) {
        IPage<User> page = this.page(new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(current, size), null);
        if (state != null) {
            return this.baseMapper.selectByState(page, state);
        }
        return page;
    }
}
  • Controller(UserController.java)
import com.example.service.IUserService;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.example.entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class UserController {

    @Autowired
    private IUserService userService;

    @GetMapping("/users")
    public IPage<User> getUsers(@RequestParam(defaultValue = "0") Integer state,
                                 @RequestParam(defaultValue = "1") int current,
                                 @RequestParam(defaultValue = "10") int size) {
        return userService.getUserListByState(state, current, size);
    }
}
  • 启动类(Application.java)
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}
  • application.properties
# 配置数据库连接信息
spring.datasource.url=jdbc:mysql://localhost:3306/userdb?useSSL=false&serverTimezone=UTC
spring.datasource.username=weige
spring.datasource.password=wg123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

# 配置 MyBatis-Plus
mybatis-plus.mapper-locations=classpath:/mapper/*.xml
mybatis-plus.type-aliases-package=com.vin.entity

以上就是MyBatis-Plus实现对查询结果进行分页的基本步骤的详细内容,更多关于MyBatis-Plus查询结果分页的资料请关注脚本之家其它相关文章!

相关文章

  • Java调用shell脚本解决传参和权限问题的方法

    Java调用shell脚本解决传参和权限问题的方法

    今天小编就为大家分享一篇关于Java调用shell脚本解决传参和权限问题的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • Java中Set集合转为List集合常见的两种方式

    Java中Set集合转为List集合常见的两种方式

    List是Java中比较常用的集合类,指一系列存储数据的接口和类,可以解决复杂的数据存储问题,这篇文章主要给大家介绍了关于Java中Set集合转为List集合常见的两种方式,需要的朋友可以参考下
    2023-12-12
  • SpringBoot返回统一的JSON标准格式实现步骤

    SpringBoot返回统一的JSON标准格式实现步骤

    这篇文章主要介绍了SpringBoot返回统一的JSON标准格式,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-08-08
  • 基于UDP实现聊天室功能

    基于UDP实现聊天室功能

    这篇文章主要为大家详细介绍了基于UDP实现聊天室功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-04-04
  • Java数据结构及算法实例:三角数字

    Java数据结构及算法实例:三角数字

    这篇文章主要介绍了Java数据结构及算法实例:三角数字,本文直接给出实现代码,代码中包含详细注释,需要的朋友可以参考下
    2015-06-06
  • Java异常处理方法汇总

    Java异常处理方法汇总

    这篇文章主要介绍了Java异常处理方法汇总,我们在软件开发的过程中,任何语言的开发过程中都离不开异常处理。下面下小编加来给大家分享各种异常处理,希望对大家有所帮助,需要的朋友可以参考一下
    2021-12-12
  • Java连接六类数据库技巧全攻略

    Java连接六类数据库技巧全攻略

    本文主要为大家介绍了Java与Oracle、DB2、Sql Server、Sybase、MySQL、PostgreSQL等数据库连接的方法。
    2015-09-09
  • idea运行tomcat报错找不到catalina.bat,系统找不到指定的文件问题

    idea运行tomcat报错找不到catalina.bat,系统找不到指定的文件问题

    这篇文章主要介绍了idea运行tomcat报错找不到catalina.bat,系统找不到指定的文件问题,具有很好的参考价值,希望对大家有所帮助,
    2023-11-11
  • Java实现读取和写入properties文件

    Java实现读取和写入properties文件

    这篇文章主要介绍了Java实现读取和写入properties文件方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • SpringBoot+Response如何统一返回result结果集

    SpringBoot+Response如何统一返回result结果集

    这篇文章主要介绍了SpringBoot+Response如何统一返回result结果集,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05

最新评论