SpringBoot分页查询
1、项目中整合了SpringBoot后,我们在进行分页查询时,也是需要引入分页的相关依赖(pom.xml中进行引入)<dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><v
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就有对应的详细信息
更多推荐
所有评论(0)