mybatis-plus分页模糊查询遇到问题

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,导致分页模糊查询失败,求大佬解决!!!

解决了

传入数据库乱码了应该

加入配置characterEncoding=utf8

mybatis-plus自带分页功能的,这个表达式明显不对哦

name LIKE ?

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps: 问答会员年卡【8折】购 ,限时加赠IT实体书,即可 享受50次 有问必答服务,了解详情>>>https://t.csdnimg.cn/RW5m