MybatisPlus分页操作中遇到的问题及解决

 更新时间:2026年06月26日 14:30:03   作者:小镇拾光  
这段文章主要讲述了在MyBatisPlus项目中遇到的SQL运行报错问题排查过程,通过检查SQL语句、MySQL服务状态及异常处理类最终定位问题;强调强调了SQL语句的重要性及正确处理异常信息的重要性

1. 问题的出现

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

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后多写了一个分号“;

将分号删除即可。

5. 总结

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

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

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • .properties文件读取及占位符${...}替换源码解析

    .properties文件读取及占位符${...}替换源码解析

    本篇文章主要介绍了.properties文件读取及占位符${...}替换源码解析的相关知识,具有很好的参考价值。下面跟着小编一起来看下吧
    2017-05-05
  • JAVA字符串类型switch的底层原理详析

    JAVA字符串类型switch的底层原理详析

    这篇文章主要给大家介绍了关于JAVA字符串类型switch的底层原理的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用JAVA具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-09-09
  • SpringCloud通过MDC实现分布式链路追踪

    SpringCloud通过MDC实现分布式链路追踪

    在DDD领域驱动设计中,我们使用SpringCloud来去实现,但排查错误的时候,通常会想到Skywalking,但是引入一个新的服务,增加了系统消耗和管理学习成本,对于大型项目比较适合,但是小的项目显得太过臃肿了,所以本文介绍了SpringCloud通过MDC实现分布式链路追踪
    2024-11-11
  • 各种格式的编码解码工具类分享(hex解码 base64编码)

    各种格式的编码解码工具类分享(hex解码 base64编码)

    这篇文章主要介绍了各种格式的编码解码工具类,集成Commons-Codec、Commons-Lang及JDK提供的编解码方法
    2014-01-01
  • spring boot整合netty的实现方法

    spring boot整合netty的实现方法

    这篇文章主要介绍了spring boot整合netty的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • java 深拷贝与浅拷贝机制详解

    java 深拷贝与浅拷贝机制详解

    这篇文章主要介绍了 java 深拷贝与浅拷贝机制详解的相关资料,需要的朋友可以参考下
    2017-02-02
  • springboottest测试依赖和使用方式

    springboottest测试依赖和使用方式

    这篇文章主要介绍了springboottest测试依赖和使用方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • java基于socket传输zip文件功能示例

    java基于socket传输zip文件功能示例

    这篇文章主要介绍了java基于socket传输zip文件功能,结合实例形式分析了java使用socket进行文件传输的具体操作步骤与服务器端、客户端相关实现技巧,需要的朋友可以参考下
    2017-07-07
  • SpringBoot 分布式验证码登录方案示例详解

    SpringBoot 分布式验证码登录方案示例详解

    为了防止验证系统被暴力破解,很多系统都增加了验证码效验,比较常见的就是图片二维码,业内比较安全的是短信验证码,当然还有一些拼图验证码,加入人工智能的二维码等等,我们今天的主题就是前后端分离的图片二维码登录方案,感兴趣的朋友一起看看吧
    2023-10-10
  • java文件上传(单文件 多文件)与删除

    java文件上传(单文件 多文件)与删除

    本文主要分享了java文件上传(单文件 多文件)与删除的示例代码。具有很好的参考价值,下面跟着小编一起来看下吧
    2017-01-01

最新评论