Mybatis中的PageHelper的执行流程分析

PageHelper Mybatis的执行流程

  • mybatis中首先要在配置文件中配置一些东西
  • 然后根据这些配置去创建一个会话工厂
  • 再根据会话工厂创建会话,会话发出操作数据库的sql语句
  • 然后通过执行器操作数据
  • 再使用mappedStatement对数据进行封装

这就是整个mybatis框架的执行情况。

插件的执行

它主要作用在Executor执行器与mappedeStatement之间

也就是说mybatis可以在插件中获得要执行的sql语句

在sql语句中添加limit语句,然后再去对sql进行封装,从而可以实现分页处理。

SpringBoot操作PageHelper

引入依赖

 <!--分页插件 pagehelper -->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <!-- 特别注意版本问题 -->
            <version>1.2.13</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.18</version>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.3.1</version>
        </dependency>

yaml配置

#整合数据源
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    username: root
    password: ok
    url: jdbc:mysql://localhost:3306/mall?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8
#Mybatis-Plus的配置
mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 配置在控制台打印 sql语句
  # 配置自定义sql语句的 *mapper.xml 文件位置
  mapper-locations: classpath:**/mapper/**.xml
pagehelper:
  helperDialect: mysql
  reasonable: true
  supportMethodsArguments: true
  params: count=countSql

项目示例结构

CategoryDao

因为使用了MybatisPlus所以有些方法可以不去实现,通过Plus自己编写

@Mapper
public interface CategoryDao extends BaseMapper<Category> {
}

CateService接口

import cn.pojo.Category;
import java.util.*;
public interface CateService {
    public List<Category> pageSelect(int page,int col);
}

CateServiceImple实现

import javax.annotation.Resource;
import java.util.List;
@Service
public class CateServiceImple implements CateService {
    @Resource
    CategoryDao categoryDao;
    @Override
    public List<Category> pageSelect(int page, int col) {
//        使用分页表明,从第几页开始,一页多少条数据
        PageHelper.startPage(page,col);

//        使用Plus进行查询所有,因为PageHelper插件会进行sql的limit的拼接
        List<Category> categories = categoryDao.selectList(null);

        return categories;
    }
}

核心代码

//        使用分页表明,从第几页开始,一页多少条数据
        PageHelper.startPage(page,col);
//        使用Plus进行查询所有,因为PageHelper插件会进行sql的limit的拼接
        List<Category> categories = categoryDao.selectList(null);

查看结果

到此这篇关于Mybatis的PageHelper的文章就介绍到这了,更多相关Mybatis的PageHelper内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • MyBatis中PageHelper不生效的解决方案

    MyBatis中PageHelper不生效 今天使用pageHelper,发现设置了PageHelper.startPage(page, pageSize);pageSize设置为10,但是结果并没有分页,查处了全部的数据: 问题解决: 原因是mybatis的依赖版本问题,之前配置的是1.0.0版本,这个版本不支持分页拦截 <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>

  • Mybatis分页查询的实现(Rowbounds和PageHelper)

    我们实现查询除了 @org.junit.Test public void test02(){ SqlSession session = MybatisUtil.getSession(); UserDao mapper = session.getMapper(UserDao.class); List<User> allUser = mapper.getAllUser(); session.close(); for (User user : allUser) { System.out.printl

  • Mybatis第三方PageHelper分页插件的使用与原理

    目录 ​用法 ​原理 PageHelper.startPage做了什么 Page分页信息在哪使用 拦截器 插件 拦截器链 加载&调用拦截器 @Intercepts注解 通过PageHelper创建代理对象 拦截器的调用源头-动态代理 分页逻辑 ​总结 ​用法 ​ 此时commentAnalyses为Page对象(PageHelper插件包内定义的) ​ 而Page对象继承自JDK中的ArrayList,扩展并封装了一些page相关的字段,如页码,每页大小,总记录数,总页数等. ​原理 我们就加了

  • SpringBoot+Mybatis分页插件PageHelper实现分页效果

    目录 一.项目结构 二.插件引入 三.代码 四.测试: 最近刚入职新公司,项目是从零开始搭建的项目.我觉得是时候考验是驴还是千里马的时候.都是泪就不多说了. 附上一篇Mybatis常用的分页案例.这次要做的是最常见的分页效果,也是基础功能.但是很多人都做不好的.这次采用Mybatis分页插件PageHelper.   仅献给伸手党的大爷们.大爷们好!拿代码记得扣666!!小的在这给感谢了!! 一.项目结构 按照controller,service,mapper(也叫dao)来建立项目,utils

  • MyBatis如何使用PageHelper实现分页查询

    目录 使用PageHelper实现分页查询 1.创建数据表 2.创建项目 2.1 创建实体类(Entity层) 2.2 数据库映射层(Mapper层) 3.运行测试 MyBatis PageHelper的使用 1.引入pagehelper的jar包 2.在mybatis的配置文件中配置拦截(也可以在spring配置文件中配置) 3.代码中如何实现 4.注意事项 分页不安全的情况 使用PageHelper实现分页查询 [实例]MyBatis使用PageHelper实现分页查询,并显示分页信息.执行

  • Mybatis中的PageHelper的执行流程分析

    PageHelper Mybatis的执行流程 mybatis中首先要在配置文件中配置一些东西 然后根据这些配置去创建一个会话工厂 再根据会话工厂创建会话,会话发出操作数据库的sql语句 然后通过执行器操作数据 再使用mappedStatement对数据进行封装 这就是整个mybatis框架的执行情况. 插件的执行 它主要作用在Executor执行器与mappedeStatement之间 也就是说mybatis可以在插件中获得要执行的sql语句 在sql语句中添加limit语句,然后再去对sql

  • MyBatis Plus插件机制与执行流程原理分析详解

    MyBatis Plus插件 MyBatis Plus提供了分页插件PaginationInterceptor.执行分析插件SqlExplainInterceptor.性能分析插件PerformanceInterceptor以及乐观锁插件OptimisticLockerInterceptor. Mybatis 通过插件 (Interceptor) 可以做到拦截四大对象相关方法的执行 ,根据需求完成相关数据的动态改变. 四大对象是: Executor StatementHandler Parame

  • 解析HashMap中的put方法执行流程

    目录 引言 HashMap底层数据结构 put方法的执行流程 总结 引言 在Java集合中,HashMap的重要性不言而喻,作为一种存储键值对的数据结构,它在日常开发中有着非常多的应用场景,也是面试中的高频考点,本篇文章就来分析一下HashMap集合中的put方法. HashMap底层数据结构 先来了解一下HashMap底层的数据结构,它实质上是一个散列表,在数据结构课程中,我们应该都学习过散列表,它是通过关键码值而直接进行访问的一种数据结构,比如存储这样的一个序列:5,12,7,6,1,3.我

  • Mybatis中特殊SQL的执行

    目录 1.模糊查询 2.批量删除 3.动态设置表名 4. 添加功能获取自增的主键 1.模糊查询 大家应该还记得sql语句的模糊查询怎么写吧,那就是使用关键字like,并且有相应的通配符一起使用,%表示多个字符,_表示一个字符,比如说现在有一张表user,查询name中第一个字母是l的人select * from user where name like ‘_l’;如果是查询name中有 l 的人select * from user where name like ‘%l%’; 模糊查询不可以使用

  • mybatis中${}和#{}取值的区别分析

    mybatis作为一个轻量级的ORM框架,应用广泛,其上手使用也比较简单:一个成熟的框架,必然有精巧的设计,值得学习. 在使用mybatis框架时,在sql语句中获取传入的参数有如下两种方式: ${paramName} #{paramName} 那如何理解这两种传参方式呢?如下带你走近背后的奥义. 先来回顾下原生Jdbc查询: public static void main(String[] args) throws Exception { // sql语句 String sql = "sele

  • Android6.0开发中屏幕旋转原理与流程分析

    本文实例讲述了Android6.0开发中屏幕旋转原理与流程.分享给大家供大家参考,具体如下: 从Android 系统开发开始,这里写下Android 6.0 屏幕旋转系统分析. 第一部分 Kenel Android 系统屏幕旋转得以实现,是靠从底层驱动gsensor 中获取数据,从而判断屏幕方向的.kernel sensor的驱动先就不在这里赘述,简单介绍下,gsensor 驱动注册input 事件 在/dev/input/下,可以通过adb getevent -p 可以查看系统所有的输入事件.

  • 在项目中直接使用hystrix的流程分析

    目录 什么是Hystrix 一.背景 二.使用方式 2.1 Jar包引入 2.2 配置文件 2.3 设置配置 2.4 实现代码 三.测试试验 四.总结 什么是Hystrix Hystrix是Netflix针对微服务分布式系统的熔断保护中间件,当我们的客户端连接远程的微服务时,有两种情况需要考虑:首先,如果远程系统当机了我们怎么办? 其次,我们如何管理对远程微服务的调用性能,以保证每个微服务以最小延迟最快性能响应? Hystrix是一个有关延迟和失败容错的开源库包,用来设计隔离访问远程系统端点或微

  • Vue3中的执行流程思路分析-流程图

    目录 一. 前言 二. Vue3 思路分析 1. createRender(options) 2. createApp 3. app.mount(‘#app’) 4. render(vnode, container) 5. patch(n1, n2, container) 6. processComponent 7. mountComponent 8. setupRenderEffect 9. patch 10. processElement mountElement 三. 结尾 一. 前言 本

  • MyBatis详细执行流程的全纪录

    Mybatis简介 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录. mybatis详细执行流程 一.通过Resource去加载全局配置文件 import org.apache.ibatis.

  • Mybatis执行流程、缓存原理及相关面试题汇总

    目录 一.Mybatis执行流程 二.Mybatis缓存 1.一级缓存 2.二级缓存 3.缓存原理 三.相关面试题 1.为什么说 Mybatis 是半自动ORM映射工具?它与全自动的区别在哪里? 2.简述一下Mybatis的执行流程吧 ? 3.说一下Mybatis的优缺点 ? 4.#{} 和 ${} 的区别是什么 ? 5.Mybatis的动态SQL有什么作用?执行原理是什么?有哪些常用标签? 总结 一.Mybatis执行流程 具体分析Mybatis是如何操作数据库的! 1.定义我们的核心配置文件

随机推荐