springboot如何集成mybatis中的分页插件pagehelper

2023-11-07

为什么要引入pagehelper(这里代码简写)

原始写法计算起始页 (page-1)*pageSize,pageSize

结束页 pageSize

select 字段名称.....  from 表名 limit 起始页,结束页

 有个这个以后就不用这么写了直接使用下面的方法即可。

(1)导入pom.xml依赖

	<!--父级项目依赖-->
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.2.5.RELEASE</version>
	</parent>
	<properties>
		<java.version>1.8</java.version>
		<fastjson_version>1.2.28</fastjson_version>
		<!--mybatis-->
		<mybatis-spring-boot-starter>2.0.0</mybatis-spring-boot-starter>
		<!--alibaba数据源-->
		<alibaba>1.0.29</alibaba>
		<!--mysql-->
		<mysql>5.1.47</mysql>
<pagehelper>1.2.5</pagehelper>
	</properties>
<dependencies>
<dependency>
			<groupId>com.github.pagehelper</groupId>
			<artifactId>pagehelper-spring-boot-starter</artifactId>
			<version>${pagehelper}</version>
		</dependency>
<!--web支持的jar springboot的启动器-->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
	<!--数据库驱动-->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>${mysql}</version>
		</dependency>
<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>druid</artifactId>
			<version>${alibaba}</version>
		</dependency>
	<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>${mybatis-spring-boot-starter}</version>
		</dependency>
</dependencies>

(2)编写配置文件application.yml

#  指定端口
spring:
server:
  port: 8999
# 分页配置
pagehelper:
  helper-dialect: mysql
  reasonable: true
  support-methods-arguments: true
  params: count=countSql
#mysql连接
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.jdbc.Driver
    username: root
    password: root
    url: jdbc:mysql://localhost:3306/ems?serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&useSSL=false
mybatis:
  type-aliases-package: springsecurity.entity
  mapper-locations: classpath:com/baidu/mapper/*.xml

(2)编写实体类

@Data
@AllArgsConstructor
@NoArgsConstructor
public class log {
    private Integer id;
    private String username;
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date date;
    private String operation;
}

(3)编写dao mapper层

@Mapper
public interface logDao(){
 List<log> queryAll();
}

(4)编写dao的实现logDaoImpl.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="springsecurity.Dao.logMapper">
    <insert id="add" useGeneratedKeys="true" parameterType="log">
        insert into log value(#{id},#{username},#{date},#{operation})
    </insert>
    <select id="queryAll" resultType="springsecurity.entity.log">
        select * from log
    </select>

</mapper>

(5)编写server

public interface logService {
    PageInfo<log> listUser(int currentPage, int pageSize);
}

(6)编写serverImpl

@Service
@Transactional
public class logServeImpl implements logService{
    @Autowired
    private logMapper logMapper;
    @Override
    public PageInfo<log> listUser(int pageNum, int pageSize) {
        PageHelper.startPage(pageNum,pageSize);
        // 查询数据库
        List<log> userDOList = logMapper.queryAll();
        // UserDO->UserVO...
        PageInfo pageInfo = new PageInfo(userDOList);
        return pageInfo;
    }
}

(7)编写controller

@RestController
@RequestMapping(value = "log")
public class logController {


private logService logService;
@Autowired
    public logController(springsecurity.service.serviceImpl.logService logService) {
        this.logService = logService;
    }
/**
参数说明
page 当前页数
pageSize 一页展示几条
**/
    @GetMapping(value = "/logs")
    public List<log> queryList(@RequestParam(value = "page",required = false,defaultValue ="1") int page,@RequestParam(value = "pageSize",required = false,defaultValue = "3") int pageSize){
         final PageInfo<log> logPageInfo = logService.listUser(page, pageSize);
         final int nextPage=logPageInfo.getNextPage();
         logPageInfo.getTotal();
         System.out.println("查询出来的条数"+nextPage);
         System.out.println("总条数"+total);
        return logPageInfo.getList();
    }
}

(8)测试 http://localhost:8999/log/logs

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

springboot如何集成mybatis中的分页插件pagehelper 的相关文章

  • 按键时关闭 ModalWindow

    我希望能够在用户按下某个键 在我的例子中是 ESC 时关闭 ModalWindow 我有一个用于按键的 Javascript 侦听器 它调用取消按钮 ID 的单击事件 jQuery modalWindowInfo closeButtonId
  • 如何获取之前的URL?

    我需要调用我的网络应用程序的 URL 例如 如果有一个从 stackoverflow com 到我的网站 foo com 的链接 我需要 Web 应用程序 托管 bean 中的 stackoverflow 链接 感谢所有帮助 谢谢 并不总是
  • jQuery AJAX 调用 Java 方法

    使用 jQuery AJAX 我们可以调用特定的 JAVA 方法 例如从 Action 类 该 Java 方法返回的数据将用于填充一些 HTML 代码 请告诉我是否可以使用 jQuery 轻松完成此操作 就像在 DWR 中一样 此外 对于
  • 在 Jar 文件中运行 ANT build.xml 文件

    我需要使用存储在 jar 文件中的 build xml 文件运行 ANT 构建 该 jar 文件在类路径中可用 是否可以在不分解 jar 文件并将 build xml 保存到本地目录的情况下做到这一点 如果是的话我该怎么办呢 Update
  • Java 公历日历更改时区

    我正在尝试设置 HOUR OF DAY 字段并更改 GregorianCalendar 日期对象的时区 GregorianCalendar date new GregorianCalendar TimeZone getTimeZone GM
  • java.lang.IllegalStateException:应用程序 PagerAdapter 更改了适配器的内容,而没有调用 PagerAdapter#notifyDataSetChanged android

    我正在尝试使用静态类将值传递给视图 而不是使用意图 因为我必须传递大量数据 有时我会收到此错误 但无法找出主要原因是什么 Error java lang IllegalStateException The application s Pag
  • 从最终实体获取根证书和中间证书

    作为密码学的菜鸟 我每天都会偶然发现一些简单的事情 今天只是那些日子之一 我想用 bouncy castle 库验证 java 中的 smime 消息 我想我几乎已经弄清楚了 但此时的问题是 PKIXparameters 对象的构建 假设我
  • 将流转换为 IntStream

    我有一种感觉 我在这里错过了一些东西 我发现自己做了以下事情 private static int getHighestValue Map
  • 在 junit 测试中获取 javax.lang.model.element.Element 类

    我想测试我的实用程序类 ElementUtils 但我不知道如何将类作为元素获取 在 AnnotationProcessors 中 我使用以下代码获取元素 Set
  • 像 Java 这样的静态类型语言中动态方法解析背后的原因是什么

    我对 Java 中引用变量的动态 静态类型和动态方法解析的概念有点困惑 考虑 public class Types Override public boolean equals Object obj System out println i
  • volatile、final 和synchronized 安全发布的区别

    给定一个带有变量 x 的 A 类 变量 x 在类构造函数中设置 A x 77 我们想将 x 发布到其他线程 考虑以下 3 种变量 x 线程安全 发布的情况 1 x is final 2 x is volatile 3 x 设定为同步块 sy
  • Java ResultSet 如何检查是否有结果

    结果集 http java sun com j2se 1 4 2 docs api java sql ResultSet html没有 hasNext 方法 我想检查 resultSet 是否有任何值 这是正确的方法吗 if resultS
  • 如何访问JAR文件中的Maven资源? [复制]

    这个问题在这里已经有答案了 我有一个使用 Maven 构建的 Java 应用程序 我有一个资源文件夹com pkg resources 我需要从中访问文件 例如directory txt 我一直在查看各种教程和其他答案 但似乎没有一个对我有
  • java for windows 中的文件图标叠加

    我正在尝试像 Tortoise SVN 或 Dropbox 一样在文件和文件夹上实现图标叠加 我在网上查了很多资料 但没有找到Java的解决方案 Can anyone help me with this 很抱歉确认您的担忧 但这无法在 Ja
  • 最新的 Hibernate 和 Derby:无法建立 JDBC 连接

    我正在尝试创建一个使用 Hibernate 连接到 Derby 数据库的准系统项目 我正在使用 Hibernate 和 Derby 的最新版本 但我得到的是通用的Unable to make JDBC Connection error 这是
  • 干净构建 Java 命令行

    我正在使用命令行编译使用 eclipse 编写的项目 如下所示 javac file java 然后运行 java file args here 我将如何运行干净的构建或编译 每当我重新编译时 除非删除所有内容 否则更改不会受到影响 cla
  • CamcorderProfile.videoCodec 返回错误值

    根据docs https developer android com reference android media CamcorderProfile html 您可以使用CamcorderProfile获取设备默认视频编解码格式 然后将其
  • 双枢轴快速排序和快速排序有什么区别?

    我以前从未见过双枢轴快速排序 是快速排序的升级版吗 双枢轴快速排序和快速排序有什么区别 我在 Java 文档中找到了这个 排序算法是双枢轴快速排序 作者 弗拉基米尔 雅罗斯拉夫斯基 乔恩 本特利和约书亚 布洛赫 这个算法 在许多数据集上提供
  • 如何防止在Spring Boot单元测试中执行import.sql

    我的类路径中有一个 import sql 文件 其中包含一些 INSERT 语句 当使用 profile devel 运行我的应用程序时 它的数据被加载到 postgres 数据库中 到目前为止一切正常 当使用测试配置文件执行测试时 imp
  • Spring Rest 和 Jsonp

    我正在尝试让我的 Spring Rest 控制器返回jsonp但我没有快乐 如果我想返回 json 但我有返回的要求 完全相同的代码可以正常工作jsonp我添加了一个转换器 我在网上找到了用于执行 jsonp 转换的源代码 我正在使用 Sp

随机推荐

  • 【狂神说Java】HTML快速入门

    目录 1 初识HTML 2 网页基本信息 3 网页基本标签 4 图像标签 5 超链接标签应用 6 行内元素和块元素 7 列表标签 8 表格标签 9 媒体元素 10 页面结构分析 11 iframe内联框架 12 初始表单post和get提交
  • 两台linux文件拷贝

    scp就是secure copy 是用来进行远程文件拷贝的 数据传输使用ssh1 并且和ssh1使用相同的认证方式 提供相同的安全保证 与rcp不同的是 scp会要求你输入密码如果需要的话 最简单的应用如下 scp 本地用户名 IP地址 文
  • angular的ElementRef和Renderer2

    Angular ElementRef 简介 angular angular 2018 09 22 Angular 的口号是 一套框架 多种平台 同时适用手机与桌面 One framework Mobile desktop 即 Angular
  • opencv3.3.0在线读取网络图片图像资源

    说明 上一篇博客中描写了imread 的用法 请参见 http blog csdn net m0 37606112 article details 78524234 这一篇来描述cv2 videoCapture 的用法 照例打开opencv
  • vue插槽的基本使用

    1 什么是插槽 插槽 Slot 是 vue 为组件的封装者提供的能力 允许开发者在封装组件时 把不确定的 希望由用户指定的部分定义为插槽 2 体验插槽的基础用法 在封装组件时 可以通过元素定义插槽 从而为用户预留内容占位符 示例代码如下 如
  • 深度学习 - 模型的优化和过拟合问题

    优化函数 学习速率与反向传播算法 学习速率 learning rate 梯度就是表明损失函数相对参数的变化率 对梯度进行缩放的参数被称为学习速率 learning rate 学习速率是一种超参数或对模型的一种手工可配置的设置 需要为它指定正
  • 《Graph Neural Networks Foundations,Frontiers and Applications》第一部分第二章第2.3.1.1节翻译和解读

    书名 Graph Neural Networks Foundations Frontiers and Applications 图神经网络的基础 前沿和应用 出版社 Springer Berlin Heidelberg 作者 Lingfei
  • Python 函数的定义

    视频版教程 Python3零基础7天入门实战视频教程 函数 函数是执行特定任务的一段代码 程序通过将一段代码定义成函数 并为该函数指定一个函数名 这样即可在需要的时候多次调用这段代码 比如我们前面学到的range 函数 就是系统内置的函数
  • Appium自动化框架从0到1之 基类的封装

    这里只封装了4个基类 其他的大家可以自己丰富 直接上代码 baseView py coding utf 8 auth carl DJ time 2020 7 9 class BaseView object 封装一些基类 def init s
  • wazuh安装,单机部署3.13

    Wazuh涉及两个主要组件的安装 Wazuh服务器和Elastic Stack 此外 Wazuh agent需要部署到受监视的主机上 Wazuh server 运行Wazuh管理器和API 它从已部署的代理收集和分析数据 Elastic S
  • Java多线程基础

    原文链接 https blog csdn net weixin 43704599 article details 107379994 1 线程简介 1 1 多任务 现实中太多这样同时做多件事情的例子了 看起来是多个任务都在做 其实本质上我们
  • 一个SQLiteReadOnlyDatabaseException的问题

    最近测试同事上报了随机的一个crash问题 看日志是SQLiteReadOnlyDatabaseException的问题 发生在update数据库的时候 我自己写的ContentProvider代码就是在程序目录下放置数据 所以不是网上常见
  • ROS1与ROS2的安装教程

    目录 一 准备工作 1 ros1对应ubuntu版本 2 ros2对应ubuntu版本 3 Ubuntu的安装 二 ROS1的安装 1 官方安装ROS的说明 http wiki ros org Installation Ubuntu dis
  • 基于MySQL的关系型数据库完成情况_SQLite vs MySQL vs PostgreSQL:关系型数据库比较...

    自1970年埃德加 科德提出关系模型之后 关系型数据库便开始出现 经过了40多年的演化 如今的关系型数据库种类繁多 功能强大 使用广泛 面对如此之多的关系型数据库 我们应该如何权衡找出适合自己应用场景的数据库系统呢 O S Tezer最近在
  • 3D数据转换一站式解决方案CAD Exchanger软件介绍

    3D数据转换一站式解决方案CAD Exchanger软件介绍 CAD Exchanger GUI是易于使用的3D查看器和转换器 用于读取和转换所有关键3D格式 IGES STEP JT ACIS Parasolid IFC FBX Soli
  • 网络安全的防护措施 45.113.202.1

    病毒和木马 安装杀毒软件定期扫毒 不接收陌生文件 下载软件尽量在正规网站下载 来路不明的U盘不要使用 DDOS攻击 设置硬件防火墙 监控 限制和预防 入侵 加强口令识别 定期更新软件 避免漏洞被利用 45 113 202 1 45 113
  • 动态爱心(html版)

  • iPhone清理喇叭灰尘_微信可以给手机喇叭超声波清理灰尘了 苹果安卓机都适用 超简单!...

    之前针对果粉用户分享过一个 喇叭灰尘清理 快捷指令 受到不少小伙伴的欢迎 这个快捷指令主要是利用声波震动原理实现 在一定程度上起到清理手机喇叭灰尘的作用 现在有开发者 将这个喇叭清理清理音频放在了小程序上 在微信上就可以给手机扬声器清理灰尘
  • 判断一个数的二进制表示中是否有连续的1

    判断一个数的二进制表示中是否有连续的1 例如 101 里就没有 而 110 里就有 def my function n return n n lt lt 1 gt 0 if name main print my function 5 参数n
  • springboot如何集成mybatis中的分页插件pagehelper

    为什么要引入pagehelper 这里代码简写 原始写法计算起始页 page 1 pageSize pageSize 结束页 pageSize select 字段名称 from 表名 limit 起始页 结束页 有个这个以后就不用这么写了直