mybatis - [13] 分页
题记部分
001 || limit
select * from mybatis.user limit 2,5;
- 2代表偏移量,从结果集的第3行开始。
- 5代表返回的记录数
UserMapper
List<User> getUserByLimit(Map<String,Integer> map);
UserMapper.xml
<select id="getUserByLimit" parameterType="map" resultType="com.harley.pojo.User">
select * from mybatis.user limit #{startIndex},#{pageSize}
</select>
测试类
package com.harley.mapper;
import com.harley.dao.UserMapper;
import com.harley.pojo.User;
import com.harley.utils.MybatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.apache.log4j.Logger;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.util.List;
/**
* @author harley
* @since 2025-02-15 20:19:43
*/
public class UserDaoTest {
static Logger logger = Logger.getLogger(UserDaoTest.class);
// 第一步: 获得SqlSession对象
SqlSession sqlSession;
UserMapper userMapper;
@Before
public void init(){
logger.info("初始化连接...");
sqlSession = MybatisUtils.getSqlSession();
userMapper = sqlSession.getMapper(UserMapper.class);
}
@Test
public void getUserByLimit(){
HashMap<String,Integer> map = new HashMap<String,Integer> map = new HashMap<String,Integer>();
map.put("startIndex",0);
map.put("pageSize",2);
List<User> userList = userMapper.getUserByLimit(map);
for (User user: userList){
System.out.println(user);
}
}
@After
public void close(){
logger.info("关闭数据库连接...");
sqlSession.close();
}
}
002 || RowBounds分页
step1: UserMapper
List<User> getUserByRowBounds();
step2: UserMapper.xml
<resultMap id="UserMap" type="com.harley.pojo.User">
<result column="id" property="id"/>
<result column="name" property="name"/>
<result column="pwd" property="password"/>
</resultMap>
<select id="getUserByRowBounds" resultMap="UserMap">
select * from mybatis.user
</select>
step3: test
package com.harley.mapper;
import com.harley.dao.UserMapper;
import com.harley.pojo.User;
import com.harley.utils.MybatisUtils;
import org.apache.ibatis.session.RowBounds;
import org.apache.ibatis.session.SqlSession;
import org.apache.log4j.Logger;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.util.List;
/**
* @author harley
* @since 2025-02-15 20:19:43
*/
public class UserDaoTest {
static Logger logger = Logger.getLogger(UserDaoTest.class);
// 获得SqlSession对象
SqlSession sqlSession;
@Before
public void init(){
logger.info("初始化连接...");
sqlSession = MybatisUtils.getSqlSession();
}
@Test
public void getUserByRowBounds(){
RowBounds rowBounds = new RowBounds(1, 2);
List<User> userList = sqlSession.selectList("com.harley.dao.UserMapper.getUserByRowBounds", null, rowBounds);
for (User user : userList) {
System.out.println(user);
}
}
@After
public void close(){
logger.info("关闭数据库连接...");
sqlSession.close();
}
}
003 || PageHelper
step1: 引入依赖
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.4.6</version>
</dependency>
step2: 配置PageHelper
application.properties
# 设置数据库方言,根据实际使用的数据库进行修改
pagehelper.helper-dialect=mysql
# 启用合理化查询,如果页码小于 1 则返回第一页,如果页码大于总页数则返回最后一页
pagehelper.reasonable=true
# 支持通过 Mapper 接口参数来传递分页参数
pagehelper.support-methods-arguments=true
application.yml
pagehelper:
helper-dialect: mysql
reasonable: true
support-methods-arguments: true
step3: 使用
(1)实体类
public class User{
private Long id;
private String name;
private Integer age;
}
(2)Mapper接口
@Mapper
public interface UserMapper{
List<User> findAllUsers();
}
(3)Service层
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public PageInfo<User> getUsersByPage(int pageNum, int pageSize) {
// 开启分页功能,pageNum 表示当前页码,pageSize 表示每页显示的记录数
PageHelper.startPage(pageNum, pageSize);
// 执行查询操作
List<User> userList = userMapper.findAllUsers();
// 将查询结果封装到 PageInfo 对象中
return new PageInfo<>(userList);
}
}
(4)Controller层
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/users")
public PageInfo<User> getUsers(@RequestParam(defaultValue = "1") int pageNum,
@RequestParam(defaultValue = "10") int pageSize) {
return userService.getUsersByPage(pageNum, pageSize);
}
}
mybatis - [13] 分页的更多相关文章
- SpringBoot集成MyBatis的分页插件 PageHelper
首先说说MyBatis框架的PageHelper插件吧,它是一个非常好用的分页插件,通常我们的项目中如果集成了MyBatis的话,几乎都会用到它,因为分页的业务逻辑说复杂也不复杂,但是有插件我们何乐而 ...
- 理解 Mybatis的分页插件 PageHelper
Mybatis + SpringMVC + Maven实现分页查询 (推荐采用的插件是PageHelper) 先看一下之前的这篇博客,这里推荐了 Mybatis 的分页方法. 按照上面的方法设置后,确 ...
- Mybatis的分页插件PageHelper
Mybatis的分页插件PageHelper 项目地址:http://git.oschina.net/free/Mybatis_PageHelper 文档地址:http://git.oschina. ...
- Mybatis 的分页插件PageHelper-4.1.1的使用
Mybatis 的分页插件 PageHelper 项目地址:http://git.oschina.net/free/Mybatis_PageHelper 文档地址:http://git.oschin ...
- Mybatis包分页查询java公共类
Mybatis包分页查询java公共类 分页----对于数据量非常大的查询中.是不可缺少的. mybatis底层的分页sql语句因为须要我们自己去手动写.而实现分页显示的时候我们须要依据分页查询条 ...
- 权限管理系统之项目框架搭建并集成日志、mybatis和分页
前一篇博客中使用LayUI实现了列表页面和编辑页面的显示交互,但列表页面table渲染的数据是固定数据,本篇博客主要是将固定数据变成数据库数据. 一.项目框架 首先要解决的是项目框架问题,搭建什么样的 ...
- Mybatis之分页插件pagehelper的简单使用
最近从家里回来之后一直在想着减肥的事情,一个月都没更新博客了,今天下午没睡午觉就想着把mybatis的分页插件了解一下,由于上个月重新恢复了系统,之前创建的项目都没了,又重新创建了一个项目. 一.创建 ...
- MyBatis 实现分页功能
MySQL 的分页功能是基于内存的分页(即查出来所有记录,再按起始位置和页面容量取出结果). 案例:①根据用户名(支持模糊查询).用户角色 id 查询用户列表(即根据用户名称或根据用户角色 id 又或 ...
- Spring Boot 项目学习 (二) MySql + MyBatis 注解 + 分页控件 配置
0 引言 本文主要在Spring Boot 基础项目的基础上,添加 Mysql .MyBatis(注解方式)与 分页控件 的配置,用于协助完成数据库操作. 1 创建数据表 这个过程就暂时省略了. 2 ...
- mybatis pagehelper 分页 失效
pagehelper 不分页几种情况的解决方法 - web洋仔 - CSDN博客https://blog.csdn.net/csdn___lyy/article/details/77160488 分页 ...
随机推荐
- MySQL8设置root用户远程访问
查询当前root状态,默认root的host是localhost use mysql; select user,host from user; update root的host为% update us ...
- CentOS7.8安装k8s
1, 安装 docker / kubelet # 在 master 节点和 worker 节点都要执行 \# 最后一个参数 1.20.6 用于指定 kubenetes 版本,支持所有 1.20.x 版 ...
- 你真的懂System.out.println()吗?
简介 众所周知,Java语言是面向对象的,那如果让你用一行代码体现出来呢? 如果你能自己读懂System.out.println(),就真正了解了Java面向对象编程的含义. 面向对象编程即创建了对象 ...
- CreateElement vs DOM Parser
Benchmark: CreateElement vs DOM Parser - MeasureThat.net 可见 createElement 效率并不逊于 HTML.
- APIView执行流程(源码分析)、Request对象源码分析
目录 一.APIView执行流程--源码分析(难,了解) 1.1 基于APIView+JsonResponse编写接口 1.2 基于APIView+Response 写接口 1.3 APIView的执 ...
- 【Linux】ps -ef|grep -v grep|awk '{print $2}' 命令详解
前言 在Linux服务器中使用脚本时,经常见到ps -ef|grep xxx|grep -v grep|awk '{print $2}'这一句命令 前半部分的ps -ef|grep命令,相信经常接触L ...
- Qt/C++音视频开发66-音频变速不变调/重采样/提高音量/变速变调/倍速播放/sonic库使用
一.前言 之前在做倍速这个功能的时候,发现快速播放会有滴滴滴的破音出现,正常1倍速没有这个问题,尽管这个破音间隔很短,要放大音量才能听到,但是总归是不完美的,后面发现,通过修改qaudiooutput ...
- Log4net的使用教程
不怎么爱写日志,(就是比较懒),后来遇上bug了找不到问题,才决定好好使用日志 其实说实话,log4配置的那些东西记不太住,但也不需要记住什么.百度就有现成的,自己跟着网上配置好之后,稍微记录一下,为 ...
- Ubuntu 20.04编译opencv-3.1.0时报错 error: 'CODEC_FLAG_GLOBAL_HEADER' was not declared in this scope
Ubuntu 20.04源码编译安装opencv320 报错 error: 'CODEC_FLAG_GLOBAL_HEADER' was not declared in this scope的解决办法 ...
- webpack使用详解
官网 官网:https://webpack.js.org 中文网:https://www.webpackjs.com 一.介绍 从webpack4.+进行介绍,会对Webpack常用配置一一讲解,各个 ...