Spring boot (2 - 2) 整合mybatis+druid+pagehelper分页插件

上一小节我们整合了druid,点击查看,我们接着整合分页插件,分页是我们项目中非常常用的功能,通过整合pagehelper分页插件,可以实现项目中快速分页。

1. pom.xml文件中增加pagehelper依赖

<!-- pagehelper -->
<dependency>
	<groupId>com.github.pagehelper</groupId>
	<artifactId>pagehelper</artifactId>
	<version>5.1.2</version>
</dependency>

2.配置pagehelper插件,新增mybatis-config.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
		PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
		"http://mybatis.org/dtd/mybatis-3-config.dtd">
 
<configuration>
	<typeAliases>
		<package name="com.demo.model" />
	</typeAliases>
	<!-- 配置分页插件 PageHelper -->
	<plugins>
		<plugin interceptor="com.github.pagehelper.PageInterceptor">
		</plugin>
	</plugins>
</configuration>

在application.properties 配置加载mybatis-config.xml

mybatis.config-location=classpath:/mybatis-config.xml

3. 编写mapper的xml文件,因为我之前的UserInfoMapper.xml是工具生成的,所以我这里在/src/main/resources/mapper/的目录下新建了ext文件夹,存放UserInfoExtMapper.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="com.demo.mapper.ext.UserInfoExtMapper" >
  <resultMap id="BaseResultMap" type="com.demo.model.UserInfo" >
    <id column="id" property="id" jdbcType="BIGINT" />
    <result column="username" property="username" jdbcType="VARCHAR" />
    <result column="password" property="password" jdbcType="VARCHAR" />
    <result column="email" property="email" jdbcType="VARCHAR" />
    <result column="created" property="created" jdbcType="TIMESTAMP" />
    <result column="updated" property="updated" jdbcType="TIMESTAMP" />
  </resultMap>
  
  <sql id="Base_Column_List" >
    id, username, password, email, created, updated
  </sql>

  <select id="selectByPage" resultMap="BaseResultMap" >
    select 
    <include refid="Base_Column_List" />
    from user_info
  </select>
  
</mapper>

注意里面的selectByPage方法,只有查询,是没有limit的,因为接下来pagehelper会帮助我们完成这个事情;selectByPage方法也可以写在原先的UserInfoMapper.xml里面。

4. 同样的,Mapper接口我也新建了一个com.demo.mapper.ext.UserInfoExtMapper,同样也是可以放在原有的UserInfoMapper.java里面。

package com.demo.mapper.ext;

import com.demo.model.UserInfo;
import com.github.pagehelper.Page;

public interface UserInfoExtMapper {
    
    Page<UserInfo> selectByPage();
}

注意里面的Page是com.github.pagehelper.Page,不要弄错了哦。

5. 在UserInfoService.java中新增方法

public PageInfo<UserInfo> selectByPage(int pageNo, int pageSize);

实现类:UserInfoServiceImpl.java

@Override
public PageInfo<UserInfo> selectByPage(int pageNo, int pageSize) {
	PageHelper.startPage(pageNo,pageSize);
	List<UserInfo> list = userInfoExtMapper.selectByPage();
	PageInfo<UserInfo> page = new PageInfo<UserInfo>(list);
	return page;
}

只需简单的几行代码,分页完成。com.github.pagehelper.PageInfo里面会有具体的分页信息,包括总记录数,页数等等

6.测试类

@Test
public void selectByPage() {
	System.err.println(JSON.toJSONString(userInfoService.selectByPage(2, 2)));
}

运行测试类,可以看到正确的打印结果。

我这里还增加了一个UserInfoController.java

@RestController
public class UserInfoController {
	
	@Autowired
	private UserInfoService userInfoService;
	
	/**
	 * 
	 * 分页查询
	 *
	 * @param pageNo
	 * @param pageSize
	 * @return
	 */
	@GetMapping("/page")
	public PageInfo<UserInfo> selectByPage(@RequestParam(value="pageNo", defaultValue="1")int pageNo, 
			@RequestParam(value="pageSize",defaultValue="10") int pageSize) {
		
		PageInfo<UserInfo> page = userInfoService.selectByPage(pageNo, pageSize);
		return page;
	}
	
}

启动项目,在浏览器访问http://localhost:8080/page?pageNo=2&pageSize=2,显示结果:

 

github源码地址 https://github.com/johnwongz/spring-boot-demo

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值