MybatisPlus分页操作中遇到的问题

  • 1. 问题的出现
  • 2. 根据提示检查SQL语句
  • 3. 检查依赖版本与配置
  • 4. 查找具体报错信息
  • 5. 总结


1. 问题的出现

员工分页查询写好之后,运行测试,结果报错:数据库异常,操作失败!

java mybatisplus 分页查询 mybatisplus分页查询报错_SQL

2. 根据提示检查SQL语句

首先怀疑:MySQL服务未开启,或者服务器宕机,或者SQL语句拼写有问题。
我将控制台中的SQL日志复制到Navicat中,删除LIMIT 10;能够运行出结果,基本排除此问题。(日志的重要性,一定要开启啊!!!)

3. 检查依赖版本与配置

然后怀疑:MyBatisPlus配置有问题。检查MyBatisPlus版本信息和配置内容之后感觉这里出错的可能性不大。

4. 查找具体报错信息

想要查看Idea中的报错结果发现,idea中没有报错信息。
因此推断,这段报错信息出自我自己写的全局异常处理类。因此我进入全局异常处理方法,尝试打印异常信息:

package com.sky.server.config.exception;

import com.sky.server.pojo.RespBean;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

import java.sql.SQLException;
import java.sql.SQLIntegrityConstraintViolationException;

/**
 * 全局异常处理
 */
@RestControllerAdvice
public class GlobalException {
    @ExceptionHandler(SQLException.class)
    public RespBean mySqlException(SQLException e){
        if (e instanceof SQLIntegrityConstraintViolationException){
            return RespBean.error("SQL完整性约束违反异常: 该数据有关联数据,操作失败!");
        }
        /** 添加内容,打印异常信息 **/
        System.out.println("数据库异常具体信息为:");
        System.out.println(e.getMessage());
        /** 添加内容,打印异常信息 **/
        return RespBean.error("数据库异常,操作失败!");
    }
}

运行之后打印结果为:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'LIMIT 10' at line 37 分析:LIMIT 10附近有问题。

然后发现在SQL语句结尾处e.id后多写了一个分号“;

java mybatisplus 分页查询 mybatisplus分页查询报错_intellij-idea_02


将分号删除即可。

5. 总结

这次的错误其实不是大问题,但是还是存在一下几个点需要注意:

  1. SQL语句不熟悉,其实在一开始就可以定位到就是SQL语句有问题。
  2. 如果是XML配置字段有错误的话,Idea控制台会有报错信息。
  3. 当结果报错,但控制台没有错误信息的话,那就是被异常捕获并处理了,打印异常信息往往是最有用的。
  4. 之前在做分页的时候没有写“”,因此也没有引起这个问题。我一直以为MyBatisPlus的XML文件中编写的SQL语句结尾“”的写或者不写都是可以的,这次事件提醒在SQL语句结尾还是不要写“”。