1、项目中整合了SpringBoot后,我们在进行分页查询时,也是需要引入分页的相关依赖(pom.xml中进行引入)
com.github.pagehelper
pagehelper-spring-boot-starter
1.2.5
在对应的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 selectAllPageQuery(@RequestParam("name") String name, @RequestParam("pageNum") int pageNum,
@RequestParam("pageSize") int pageSize) {
return userService.selectAllPageQuery(name,pageNum,pageSize);
}
}
在入参部分,我们需要传入是我们需要查询的名字,pagesize(每页多少个)、pageNum(第几页(默认是从第一页开始))
这边需要通过PageInfo
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 selectAll( String name) ;
}
可以直接用我们查询List
如果说后面入参有多个,可以用@param(“XXX”)进行标识
TeacherMapper.xml:
我们要注意的是,通过模糊查询的话,我们需要用以下的标准格式进行:
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 selectAll(String name) {
return teacherMapper.selectAll(name);
}
// 多个查询(分页)
public PageInfo selectAllPageQuery(String name, int pageNum, int pageSize) {
PageHelper.startPage(pageNum, pageSize);
List list =selectAll(name);
PageInfo result = new PageInfo(list);
return result;
}
}
进行多个分页查询时,我们判断传入的参数,
分页的话,都是需要进行输入:PageHelper.startPage(pageNum, pageSize);
PageHelper.startPage(1, 10);进行查询第一页,每页显示数量为10条
这边的pageNum与pageSize通过前端进行传入:
但是我们要记住的是,这个分页拦截器,需要放在我们需要进行SQL分页的语句前面,并且,该拦截器只会对遇到的第一个SQL进行分页,所以要记住这个所放置的位置;
所以这边的拦截器放在了:List
如果我们想获取分页的详细信息的话,我们首先可以先使用
PageInfo
后面return返回的result就有对应的详细信息