文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Mybatis怎么快速实现分页查询

2023-06-20 21:05

关注

这篇文章主要讲解了“Mybatis怎么快速实现分页查询”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Mybatis怎么快速实现分页查询”吧!

目录

前言

Mybatis算是对数据库操作的利器了。但是在处理分页的时候,Mybatis并没有什么特别的方法,一般需要自己去写limit子句实现,成本较高。好在有国内开发者写了一个PageHelper插件,可以帮助我们快速实现分页查询。

官网地址

首先创建一个Maven项目

导入相关依赖:

<!--    依赖列表-->    <dependencies><!--        mysql驱动-->        <dependency>            <groupId>mysql</groupId>            <artifactId>mysql-connector-java</artifactId>            <version>8.0.25</version>        </dependency><!--        单元测试-->        <dependency>            <groupId>junit</groupId>            <artifactId>junit</artifactId>            <version>4.13</version>            <scope>test</scope>        </dependency><!--        pageHelper依赖-->        <dependency>            <groupId>com.github.pagehelper</groupId>            <artifactId>pagehelper</artifactId>            <version>5.2.1</version>        </dependency><!--        mybatis依赖-->        <dependency>            <groupId>org.mybatis</groupId>            <artifactId>mybatis</artifactId>            <version>3.5.7</version>        </dependency><!--        log4j日志依赖-->        <dependency>            <groupId>log4j</groupId>            <artifactId>log4j</artifactId>            <version>1.2.17</version>        </dependency>    </dependencies>

记住导入PageHelper依赖:

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

数据库中创建一张表

Mybatis怎么快速实现分页查询

设置Mybatis配置文件

在resources目录下,创建一个sqlMapConfig.xml文件,用于做一些全局的mybatis基本的配置,例如数据库连接信息,事务,mapper映射文件路径,日志实现,类的别名,也包含了分页插件的基本配置。

<configuration><!--使用外部属性配置文件 resource:指定类路径下的某个属性配置文件--><properties resource="db.properties" /><settings>        <!--日志的实现是LOG4J--><setting name="logImpl" value="LOG4J" /></settings> <!--声明别名--><typeAliases><package name="com.ren.domain" /></typeAliases>    <!--mybatis的插件配置--><plugins><!-- com.github.pagehelper为PageHelper类所在包名 --><plugin interceptor="com.github.pagehelper.PageInterceptor"><!-- 表示使用mysql的分页方法 --><property name="helperDialect" value="mysql" /><!-- 表示当页码长度为0 的时候,就不进行分页查询 --><property name="pageSizeZero" value="true"/></plugin></plugins><!-- 配置连接数据库四要素 --><environments default="dev"><environment id="dev"><transactionManager type="JDBC" /><dataSource type="POOLED"><property name="driver" value="${driverClassName}" /><property name="url" value="${url}" /><property name="username" value="${username}" /><property name="password" value="${password}" /></dataSource></environment></environments> <mappers><mapper resource="com/ren/mapper/StudentMapper.xml" /></mappers></configuration>

编写pojo实体类和mapper接口和mapper映射文件

Student实体类

package pojo;public class Student {    private Integer id;    private String name;    private String email;    private Integer age;    public Student() {    }    public Student(Integer id, String name, String email, Integer age) {        this.id = id;        this.name = name;        this.email = email;        this.age = age;    }    public Integer getId() {        return id;    }    public void setId(Integer id) {        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getEmail() {        return email;    }    public void setEmail(String email) {        this.email = email;    }    public Integer getAge() {        return age;    }    public void setAge(Integer age) {        this.age = age;    }    @Override    public String toString() {        return "Student{" +                "id=" + id +                ", name='" + name + '\'' +                ", email='" + email + '\'' +                ", age=" + age +                '}';    }}

mapper接口

package mapper;import pojo.Student;import java.util.List;public interface StudentMapper {    //查询所有学生    List<Student> selectAll();}

Mapper映射文件

<?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="mapper.StudentMapper">    <select id="selectAll" resultType="pojo.Student">        select * from student order by id    </select></mapper>

在sqlMapConfig文件中指定Mapper文件位置

<!--    mapper映射文件位置--><mappers><package name="mapper"/></mappers>

编写MyBatisUtils

package utils;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;import java.io.IOException;import java.io.InputStream;public class MyBatisUtil {    private static SqlSessionFactory factory  = null;    static {        String config="sqlMapConfig.xml";        try {           InputStream inputStream  =Resources.getResourceAsStream(config);           factory  = new SqlSessionFactoryBuilder().build(inputStream);        } catch (IOException e) {            e.printStackTrace();        }    }    //创建方法,获取SqlSession对象    public static SqlSession getSqlSession(){        SqlSession session = null;        if( factory != null ){            session =factory.openSession();// openSession(true);        }        return session;    }}

创建测试类

import com.github.pagehelper.PageHelper;import mapper.StudentMapper;import org.apache.ibatis.session.SqlSession;import org.junit.Test;import pojo.Student;import utils.MyBatisUtil;import java.util.List;public class pageHelper_Test {    @Test    public void PageHelperTest(){        //获取sqlSession        SqlSession sqlSession = MyBatisUtil.getSqlSession();        //获取mapper代理        StudentMapper mapper = sqlSession.getMapper(StudentMapper.class);        //调用PageHelper        PageHelper.startPage(2,2);        //查询所有学生        List<Student> studentList = mapper.selectAll();        //遍历结果List集合        studentList.forEach(student -> System.out.println(student));        //关闭sqlSession对象        sqlSession.close();    }}

查看结果

Mybatis怎么快速实现分页查询

可以看到sql语句,在mapper文件中并没有写limit,pageHelper已经帮我们加上了limit关键字完成了查询.OK了

感谢各位的阅读,以上就是“Mybatis怎么快速实现分页查询”的内容了,经过本文的学习后,相信大家对Mybatis怎么快速实现分页查询这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯