mp的版本使用的是3.3.1
分页插件配置
调用位置
//讲师分页列表
@ApiOperation(value = "讲师分页列表" )
@GetMapping("/admin/edu/teacher/list/{page}/{limit}")
public R listPage(@ApiParam("当前页码") @PathVariable Long page,
@ApiParam("每页记录数") @PathVariable Long limit,
@ApiParam("查询对象") TeacherQueryVo teacherQueryVo){
Page<Teacher> pageParam = new Page<>(page, limit);
IPage<Teacher> pageModel = teacherService.selectPage(pageParam , teacherQueryVo);
List<Teacher> records = pageModel.getRecords();
long total = pageModel.getTotal();
return R.ok().data("total",total).data("rows",records);
}
具体实现
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.shanx.guli.service.edu.entity.Teacher;
import com.shanx.guli.service.edu.entity.vo.TeacherQueryVo;
import com.shanx.guli.service.edu.mapper.TeacherMapper;
import com.shanx.guli.service.edu.service.TeacherService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
/**
* <p>
* 讲师 服务实现类
* </p>
*
* @author shanx
* @since 2021-06-15
*/
@Service
public class TeacherServiceImpl extends ServiceImpl<TeacherMapper, Teacher> implements TeacherService {
@Override
public IPage<Teacher> selectPage(Page<Teacher> pageParam, TeacherQueryVo teacherQueryVo) {
//显示分页查询列表
//1.排序: 按照sort字段排序
QueryWrapper<Teacher> queryWrapper = new QueryWrapper<>();
queryWrapper.orderByAsc("sort");
//2.分页查询
if(teacherQueryVo == null){ //没有查询条件 直接返回分页
return baseMapper.selectPage(pageParam,queryWrapper);
}
//3.条件查询
String name = teacherQueryVo.getName();
Integer level = teacherQueryVo.getLevel();
String joinDateBegin = teacherQueryVo.getJoinDateBegin();
String joinDateEnd = teacherQueryVo.getJoinDateEnd();
if(!StringUtils.isEmpty(name)){ //name不为空
queryWrapper.likeRight("name", name);
}
if(level != null){
queryWrapper.eq("level", level);
}
if(!StringUtils.isEmpty(joinDateBegin)){
queryWrapper.ge("join_date", joinDateBegin);
}
if(!StringUtils.isEmpty(joinDateEnd)){
queryWrapper.le("join_date", joinDateBegin);
}
Page<Teacher> teacherPage = baseMapper.selectPage(pageParam, queryWrapper);
return baseMapper.selectPage(pageParam,queryWrapper);
}
}
swagger测试
日志输出
Creating a new SqlSession
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@3f379507] was not registered for synchronization because synchronization is not active
JDBC Connection [HikariProxyConnection@1127690788 wrapping com.mysql.cj.jdbc.ConnectionImpl@3ed529c] will not be managed by Spring
JsqlParserCountOptimize sql=SELECT id,name,intro,career,level,avatar,sort,join_date,is_deleted AS deleted,gmt_create,gmt_modified FROM edu_teacher
WHERE is_deleted=0
AND (name LIKE ?) ORDER BY sort ASC
==> Preparing: SELECT COUNT(1) FROM edu_teacher WHERE is_deleted = 0 AND (name LIKE ?)
==> Parameters: 周%(String)
<== Columns: COUNT(1)
<== Row: 0
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@3f379507]
Creating a new SqlSession
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@28c2fa38] was not registered for synchronization because synchronization is not active
JDBC Connection [HikariProxyConnection@263894321 wrapping com.mysql.cj.jdbc.ConnectionImpl@3ed529c] will not be managed by Spring
JsqlParserCountOptimize sql=SELECT id,name,intro,career,level,avatar,sort,join_date,is_deleted AS deleted,gmt_create,gmt_modified FROM edu_teacher
WHERE is_deleted=0
AND (name LIKE ?) ORDER BY sort ASC
==> Preparing: SELECT COUNT(1) FROM edu_teacher WHERE is_deleted = 0 AND (name LIKE ?)
==> Parameters: 周%(String)
<== Columns: COUNT(1)
<== Row: 0
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@28c2fa38]
数据库的预查询
根据数据库查询结果,mp的第一次查询应该返回2,但是不知道为什么给我返回了0,导致分页模糊查询失败,求大佬解决!!!