SpringBoot整合系列-PageHelper分页插件

原创作品,可以转载,但是请标注出处地址:https://www.cnblogs.com/V1haoge/p/9971043.html

SpringBoot整合MyBatis分页插件PageHelper

步骤

第一步:首先整合MyBatis

参照之前SpringBoot整合系列-整合MyBatis

第二步:添加必要的依赖

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

第三步:添加必要的配置

第四步:添加必要的配置类

@Configuration
public class PageHelperConfig {@Beanpublic PageHelper pageHelper(){PageHelper pageHelper = new PageHelper();Properties properties = new Properties();properties.setProperty("offsetAsPageNum","true");properties.setProperty("rowBoundsWithCount","true");properties.setProperty("reasonable","true");properties.setProperty("dialect","mysql");    //配置mysql数据库的方言pageHelper.setProperties(properties);return pageHelper;}
}

第五步:使用插件

6-1 定义mapper,延用之前的mapper

BookRepository.xml

<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.springbootdemo.mapper.BookRepository"><!--省略多余内容--><select id="getBooks" resultMap="bookResultMap">select * from BOOK WHERE 1=1<if test="bookId != null">and BOOK_ID = #{bookId}</if><if test="pageNum != null">and PAGE_NUM = #{pageNum}</if><if test="bookType != null">and BOOK_TYPE = #{bookType}</if><if test="bookDesc != null">and BOOK_DESC = #{bookDesc}</if><if test="bookPrice != null">and BOOK_PRICE = #{bookPrice}</if><if test="bookName != null">and BOOK_NAME = #{bookName}</if></select><select id="count" resultType="int">select count(1) from BOOK WHERE 1=1<if test="bookId != null">and BOOK_ID = #{bookId}</if><if test="pageNum != null">and PAGE_NUM = #{pageNum}</if><if test="bookType != null">and BOOK_TYPE = #{bookType}</if><if test="bookDesc != null">and BOOK_DESC = #{bookDesc}</if><if test="bookPrice != null">and BOOK_PRICE = #{bookPrice}</if><if test="bookName != null">and BOOK_NAME = #{bookName}</if></select><resultMap id="bookResultMap" type="Book"><id column="BOOK_ID" property="bookId"/><result column="PAGE_NUM" property="pageNum"/><result column="BOOK_NAME" property="bookName"/><result column="BOOK_TYPE" property="bookType"/><result column="BOOK_DESC" property="bookDesc"/><result column="BOOK_PRICE" property="bookPrice"/><result column="CREATE_TIME" property="createTime"/><result column="MODIFY_TIME" property="modifyTime"/></resultMap>
</mapper>

BookRepository.java

public interface BookRepository {//省略多余内容List<Book> getBooks(Book book);int count(Book book);
}

6-2 定义service

@Service
@Log4j2
public class BookService {@Autowiredprivate BookRepository bookRepository;// 省略多余内容public ResponseEntity<PageInfo<Book>> getBooksByPageHelper(int pageId, int pageSize) {PageHelper.startPage(pageId, pageSize);List<Book> books = bookRepository.getBooks(Book.builder().build());int totalNum  = bookRepository.count(Book.builder().build());PageInfo<Book> page = new PageInfo<>();page.setPageNum(pageId);page.setPageSize(pageSize);page.setSize(totalNum);page.setList(books);return ResponseEntity.ok(page);}
}

此处使用PageHelper提供的PageInfo来承载分页信息,你也可以自定义分页模型来进行承载,但一般情况下使用给定的完全能满足要求

6-3 定义controller

@RestController
@RequestMapping("/book")
@Api(description = "书籍接口")
@Log4j2
public class BookApi {@Autowiredprivate BookService bookService;// 省略多余内容@RequestMapping(value = "/getBooksByPageHelper", method = RequestMethod.GET)@ApiOperation(value = "分页获取书籍", notes = "通过PageHelper分页获取书籍", httpMethod = "GET")public ResponseEntity<PageInfo<Book>> getBooksByPageHelper(final int pageId, final int pageNum){return bookService.getBooksByPageHelper(pageId, pageNum);}}

转载于:https://www.cnblogs.com/V1haoge/p/9971043.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/364919.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql为什么不能插入数据_mysql为啥不能插入数据

mysql为何不能插入数据&#xff1f;安装AppServ后首次使用mysql&#xff0c;没有图形界面&#xff0c;在“MySql Command Line Client”的操作如下&#xff1a;mysql> create database cars;Query OK, 1 row affected (0.00 sec)mysql> use cars;Database changedmysql&g…

scss-@extend

extend指令用于共享规则和选择器之间的关系。它可以扩展所有其他类的样式在一个类中&#xff0c;也可应用于自己特定的样式。 查看如下scssextend示例&#xff1a; .style{font-size: 30px;font-style: italic; }h2{color: #787878;extend .style} .container{extend h2 } 编译…

JavaSE 7,8:确定特定文件系统支持的视图

如果您对文件或目录有疑问&#xff0c;例如是否隐藏文件&#xff0c;是否为目录&#xff0c;文件的大小以及文件的所有者&#xff0c;则可以从元数据中获得这些问题&#xff08;以及许多其他问题&#xff09;的答案&#xff0c;这是关于其他数据的数据。 NIO.2将元数据的概念与…

mocha 测试 mysql_e2e 自动化集成测试 架构 实例 WebStorm Node.js Mocha WebDrive

e2e 自动化集成测试 架构 京东 商品搜索 实例 WebStorm Node.js Mocha WebDriverIO Selenium Step by step 二 图片验证码的识别 &#xff0c; 下面讲一下Node.js中如何访问数据库&#xff0c; 在做自动化测试过程中&#xff0c; 经常可能遇到需要到数据库取值&#xff0c;或是…

13.看板方法——使用两层系统扩展看板笔记

00.看板方法的第一条原则是&#xff1a;对在制品设置限额&#xff0c;并通过使用一个可视化的信号系统来拉动工作。 01.大型项目也需要大家对优先级排序节奏达成共识&#xff0c;及时对输入队列进行填充。一般的规则是&#xff0c;会议越频繁今儿节奏越紧凑越好。 02.规模更小、…

在Window上使用Jenkins自动发布Java工件

这篇文章将展示如何使用Jenkins Continuous Integration自动执行Java Web应用程序&#xff08;使用MYSQL DB和基于Hibernate ORM在基于REST的Jersey2 Spring环境中开发的学生申请应用程序&#xff09;的发布过程-上载发布工件到发布存储库。 如上一篇文章在Windows上使用Jenkin…

scss-@for 指令

此指令用于循环输出&#xff0c;具有两种循环方式&#xff0c;下面分别做一下介绍。 &#xff08;1&#xff09;.for $var from <start> through <end>: 此种方式的遍历索引区间是[start,end]&#xff0c;scss代码实例如下: for $i from 1 through 3 {.item-#{$i} …

Python开发【第六篇】:模块

Python开发【第六篇】&#xff1a;模块 模块&#xff0c;用一砣代码实现了某个功能的代码集合。 类似于函数式编程和面向过程编程&#xff0c;函数式编程则完成一个功能&#xff0c;其他代码用来调用即可&#xff0c;提供了代码的重用性和代码间的耦合。而对于一个复杂的功能来…

yocto 离线编译

使用yocto编译一个软件包时&#xff0c;一般会先在本地寻找下载好的源码包&#xff0c;如果不存在则根据配置从网络下载。 添加本地源码包 为了支持离线编译&#xff0c;添加一个包的配置文件后&#xff0c;需要在本地也准备好源码包。 可以先打开网络连接&#xff0c;让yocto帮…

mysql 帐号开启远程_两大步骤教您开启MySQL 数据库远程登陆帐号

在工作实践和学习中&#xff0c;如何开启 MySQL 数据库的远程登陆帐号算是一个难点的问题&#xff0c;以下内容便是在工作和实践中总结出来的两大步骤&#xff0c;能帮助DBA们顺利的完成开启 MySQL 数据库的远程登陆帐号。1、确定服务器上的防火墙没有阻止 3306 端口MySQL 默认…

scss-字符串连接符

运算可用于连接字符串: // SCSS p {cursor: e -resize; } // 编译后的 CSS 样式 p {cursor: e-resize; } 请注意&#xff0c;如果带引号的字符串被添加到不带引号的字符串中&#xff08;也就是说&#xff0c;带引号的字符串在 的左侧&#xff09;&#xff0c; 那么返回的结…

用于Play框架分布式应用程序的Init.d Shell脚本

我编写了一个Shell脚本来控制使用内置命令dist打包的Play框架应用程序。 以这种方式打包的应用程序是压缩的独立发行版&#xff0c;不需要在应该运行其的计算机上安装Play框架。 所需的一切都在包装内。 在zip的bin目录中&#xff0c;有一个可执行的Shell脚本&#xff0c;其名称…

在Java中使用内存映射文件时检测(写入)失败

内存映射文件是一个很好的并且经常被忽视的工具。 我不会在这里详细介绍它们的工作方式&#xff08;使用 力 Google Luke&#xff01;&#xff09;&#xff0c;但我将快速总结其优势&#xff1a; 操作系统提供的延迟加载和写入缓存&#xff08;您不必自己编写&#xff0c;并…

在jsp文件中通过超链接访问servlet_Eclipse中创建Servlet

1.新建test1.jsp文件&#xff0c;输入如下代码代码解释&#xff1a;一个超链接&#xff0c;跳转到forwardServlet注意forwardServlet 这里是个Servlet2.在工程中新建Servlet3.输入Class名称&#xff0c;注意下边的Supper Class 它自动继承了HttpServlet选择next4.Create Servle…

C# 多线程学习系列四之ThreadPool取消、超时子线程操作以及ManualResetEvent和AutoResetEvent信号量的使用...

1、简介 虽然ThreadPool、Thread能开启子线程将一些任务交给子线程去承担,但是很多时候,因为某种原因,比如子线程发生异常、或者子线程的业务逻辑不符合我们的预期,那么这个时候我们必须关闭它,而不是让它继续执行,消耗资源.让CPU不在把时间和资源花在没有意义的代码上. 2、主线…

HTML邮件制作规范

以下内容有些是别人总结的&#xff0c;有些是自己在工作中总结的。 模板最佳尺寸&#xff1a;显示宽度550px-750px&#xff0c;模板高度控制在一屏以内。 1、 用table css方式构建模板 Div css布局不完全被邮件客户端支持&#xff0c;所以无法使用div css布局。 2、 可以使用…

Oracle学习:新建表空间

1. 以 sysdba 身份登入Oracle sqlplus / as sysdba; 2. 创建表空间 create tablespace (空间名)fwptfs (数据文件存放路径)datafile D:\xxx (初始大小)size 500m (自动扩容&#xff0c;每次200m)autoextend on next 200m; 3. 创建用户 create user (用户名)fwptfs…

在Jersey 2中进行集成测试自定义验证约束

我最近加入了一个团队&#xff0c;试图将一个单一的遗留系统转换为Java中的RESTful服务集。 他们决定使用最新的2.x版本的Jersey作为REST容器&#xff0c;这对我来说不是首选&#xff0c;因为我不是JSR- *规范的忠实拥护者。 但是现在我必须承认&#xff0c;JAX-RS 2.x的运行正…

mysql什么实务_MysQL是什么类型的据库?

【单选题】【听力题】Listen to the interview with Ajay, someone from India. Are the following statements true or false? (6.0分)【听力题】Listen to the talk about the changing of the guard ceremony in London. Then fill in the details in the process. (8.0分)…

tomcat7使用dbcp连接池遇到的坑

项目部署在tomcat后每隔一段时间便会报错 Cause: java.sql.SQLException: Could not retrieve transation read-only status server ; SQL []; Could not retrieve transation read-only status server; nested exception is java.sql.SQLException: Could not retrieve transa…