SpringBoot分页查询

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作为结果的传出,不再是List

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这块的数据进行,这边也是通过我们的name进行查询

如果说后面入参有多个,可以用@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 list =selectAll(name);前面。就是需要对这边SQL查询出来的Teacher进行分页

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

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

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

你可能感兴趣的:(MyBatis,SpringBoot,spring,boot,java,spring)