java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > MyBatis分页机制

深入了解MyBatis分页机制

作者:小威要向诸佬学习呀

在企业项目的数据库操作中,分页查询是一个常见需求,尤其当数据量庞大时,MyBatis作为我们Java开发者的持久层框架,为分页提供了灵活的支持,本篇文章我们将深入探讨MyBatis的分页机制,使我们在实际开发项目中运用自如,需要的朋友可以参考下

MyBatis分页原理

在讲解mybatis的分页原理之前,我们先来看一下:内存分页 vs. 数据库分页

现在我们再具体讲MyBatis 的分页方式。

MyBatis 支持两种分页方式:物理分页和内存分页。但是在实际应用中,博主比较推荐使用物理分页。

MyBatis 分页插件

为了实现物理分页,MyBatis 提供了分页插件,如 PageHelper。这些插件可以自动修改原始 SQL,添加分页相关的语句。

如何使用 MyBatis 分页插件

接下来我们讲解一下如何使用 MyBatis 分页插件 。

首先第一步肯定是引入依赖

先创建一个 Maven 项目,引入 PageHelper 依赖:

<dependency>  
    <groupId>com.github.pagehelper</groupId>  
    <artifactId>pagehelper-spring-boot-starter</artifactId>   
</dependency>

然后配置 PageHelper

在 MyBatis 的配置文件(如 mybatis-config.xml)中,添加插件配置:

<plugins>  
    <plugin interceptor="com.github.pagehelper.PageInterceptor">  
        <property name="dialect" value="mysql"/> <!-- 根据实际数据库选择方言 -->  
        <property name="reasonable" value="true"/> <!-- 支持接口参数中的 pageNum 和 pageSize 为 0 时使用默认值 -->  
        <property name="supportMethodsArguments" value="true"/> <!-- 支持通过 Mapper 接口参数来传递分页参数 -->  
        <property name="params" value="count(countSql)"/> <!-- count 查询的 SQL 参数 -->  
    </plugin>  
</plugins>

最后使用 PageHelper

在 Mapper 接口或 Service 层使用 PageHelper:

// 在查询之前设置分页参数  
PageHelper.startPage(pageNum, pageSize);  
List<User> users = userMapper.selectByExample(example);  
// 使用 PageInfo 包装查询结果,获取分页信息  
PageInfo<User> pageInfo = new PageInfo<>(users, pageSize);

以博主之前做过的课设项目为例:

我们手上现在有一个UserMapper接口,用来查询用户数据:

public interface UserMapper {  
    List<User> selectAllUsers();  
}

在Service层或Controller层中,我们这时候可以使用PageHelper来实现分页:

@Service  
public class UserService {  
    @Autowired  
    private UserMapper userMapper;  
      
    public PageInfo<User> getUsers(int pageNum, int pageSize) {  
        PageHelper.startPage(pageNum, pageSize);  // 启动分页  
        List<User> users = userMapper.selectAllUsers();  // 查询用户数据  
        return new PageInfo<>(users);  // 使用PageInfo包装查询结果,获取分页信息  
    }  
}

当调用getUsers方法时,PageHelper会自动为selectAllUsers方法中的SQL添加分页语句,从而只查询当前页的数据。

前端可以根据返回的PageInfo对象获取当前页的数据、总页数、总记录数等信息,并进行相应的展示。

文章到这里就先结束了,后续会继续分享相关的知识点。

以上就是深入了解MyBatis分页机制的详细内容,更多关于MyBatis分页机制的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文