java mybatis分页

Mybatis分页插件PageHelper可以方便地实现分页功能,只需在查询方法前调用PageHelper.startPage()即可。

MyBatis分页原理

MyBatis分页主要是通过拦截器(Interceptor)来实现的,当执行查询操作时,拦截器会对SQL语句进行拦截,然后修改SQL语句,添加分页相关的关键字和参数,最后执行修改后的SQL语句。

MyBatis分页实现步骤

1、引入MyBatis分页插件PageHelper

java mybatis分页

在项目的pom.xml文件中添加PageHelper依赖:

<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper</artifactId>
    <version>5.2.0</version>
</dependency>

2、配置MyBatis分页插件

在MyBatis的配置文件mybatisconfig.xml中添加PageHelper插件配置:

<configuration>
    ...
    <plugins>
        <plugin interceptor="com.github.pagehelper.PageInterceptor">
            <!配置参数 >
            <property name="helperDialect" value="mysql"/>
            <property name="reasonable" value="true"/>
            <property name="supportMethodsArguments" value="true"/>
            <property name="params" value="count=countSql"/>
        </plugin>
    </plugins>
    ...
</configuration>

3、使用PageHelper进行分页查询

java mybatis分页

在需要进行分页查询的地方,调用PageHelper的静态方法startPage()设置分页参数,然后执行查询操作。

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserService {
    @Autowired
    private SqlSessionFactory sqlSessionFactory;
    public PageInfo<User> findUsersByPage(int pageNum, int pageSize) {
        // 开始分页,设置当前页码和每页显示的记录数
        PageHelper.startPage(pageNum, pageSize);
        // 获取SqlSession对象,执行查询操作
        try (SqlSession sqlSession = sqlSessionFactory.openSession()) {
            UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
            List<User> users = userMapper.findAll();
            // 封装分页信息到PageInfo对象中返回
            return new PageInfo<>(users);
        }
    }
}

4、编写Mapper接口和映射文件,实现查询操作

编写UserMapper接口和对应的映射文件UserMapper.xml:

UserMapper接口:

java mybatis分页

package com.example.mapper;
import com.example.entity.User;
import java.util.List;
public interface UserMapper {
    List<User> findAll();
}

UserMapper.xml:

<?xml version="1.0" encoding="UTF8"?>
<!DOCTYPE mapper PUBLIC "//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis3mapper.dtd">
<mapper namespace="com.example.mapper.UserMapper">
    <select id="findAll" resultType="com.example.entity.User">
        SELECT * FROM user_table WHERE 1=1 LIMIT #{offset}, #{pageSize}
    </select>
</mapper>

原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/649788.html

本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。

(0)
未希新媒体运营
上一篇 2024-05-23 17:37
下一篇 2024-05-23 17:40

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

产品购买 QQ咨询 微信咨询 SEO优化
分享本页
返回顶部
云产品限时秒杀。精选云产品高防服务器,20M大带宽限量抢购 >>点击进入