1、项目中整合了SpringBoot后,我们在进行分页查询时,也是需要引入分页的相关依赖(pom.xml中进行引入)

<dependency>
			<groupId>com.github.pagehelper</groupId>
			<artifactId>pagehelper-spring-boot-starter</artifactId>
			<version>1.2.5</version>
		</dependency>

 在对应的application.properties配置分页的分页数据等

pagehelper.helper-dialect=mysql
pagehelper.reasonable=true
pagehelper.support-methods-arguments=true

2、在编写项目时,我们可以先写对应的controller层数据,可以先跟前段进行联调,

package com.cmj.controller;

import java.util.List;

import org.apache.ibatis.annotations.Param;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import com.cmj.entity.Teacher;
import com.cmj.service.UserService;
import com.github.pagehelper.PageInfo;

@RestController
@RequestMapping("/teacher")
public class TeacherController {
	@Autowired
	private UserService userService;


	// 多个查询(分页)
	@GetMapping("/selectAllPageQuery")
	public PageInfo<Teacher> selectAllPageQuery(@RequestParam("name") String name,     @RequestParam("pageNum") int pageNum,
			@RequestParam("pageSize") int pageSize) {
		return userService.selectAllPageQuery(name,pageNum,pageSize);

	}

}

 在入参部分,我们需要传入是我们需要查询的名字,pagesize(每页多少个)、pageNum(第几页(默认是从第一页开始))

这边需要通过PageInfo<Teacher>作为结果的传出,不再是List<Teacher>

3、mapper相关配置文件的编写

TeacherMapper.java:

package com.cmj.dao;
import java.util.List;

import org.apache.ibatis.annotations.Mapper;

import com.cmj.entity.Teacher;
@Mapper
public interface TeacherMapper {
	public List<Teacher> selectAll( String name) ;
}

可以直接用我们查询List<Teacher>这块的数据进行,这边也是通过我们的name进行查询

如果说后面入参有多个,可以用@param(“XXX”)进行标识

TeacherMapper.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.cmj.dao.TeacherMapper">
    
    
    <!-- 查询全部的内容 -->
    <select id="selectAll" resultType="teacher" >
    	select * from teacher where name like concat('%', #{name}, '%')
    </select>
    
</mapper>

我们要注意的是,通过模糊查询的话,我们需要用以下的标准格式进行:

like concat('%', #{name}, '%')

4、写完对应Mapper配置文件后,我们后面需要在我们的 service层进行调用我们所要测试的内容

package com.cmj.service;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.cmj.dao.TeacherMapper;
import com.cmj.entity.Teacher;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;

@Service
public class UserService {
	@Autowired
	private TeacherMapper teacherMapper;

	// 多个查询
	public List<Teacher> selectAll(String name) {
		return teacherMapper.selectAll(name);

	}

	// 多个查询(分页)
	public PageInfo<Teacher> selectAllPageQuery(String name, int pageNum, int pageSize) {
		PageHelper.startPage(pageNum, pageSize);
		List<Teacher> list =selectAll(name);
		PageInfo<Teacher> result = new PageInfo<Teacher>(list);
		return result;

	}
}

 进行多个分页查询时,我们判断传入的参数,

分页的话,都是需要进行输入:PageHelper.startPage(pageNum, pageSize);

PageHelper.startPage(1, 10);进行查询第一页,每页显示数量为10条

这边的pageNum与pageSize通过前端进行传入:

 但是我们要记住的是,这个分页拦截器,需要放在我们需要进行SQL分页的语句前面,并且,该拦截器只会对遇到的第一个SQL进行分页,所以要记住这个所放置的位置;

所以这边的拦截器放在了:List<Teacher> list =selectAll(name);前面。就是需要对这边SQL查询出来的Teacher进行分页

如果我们想获取分页的详细信息的话,我们首先可以先使用

PageInfo<Teacher> result= new PageInfo< Teacher >(list);

后面return返回的result就有对应的详细信息

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐