You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Spring与MyBatis中显示SQL错误信息?

如何打印MyBatis的SQL错误并排查静默异常?

看起来你遇到的问题是MyBatis执行SQL时抛出了异常,但请求直接静默退出,连错误信息都没打出来——这确实挺让人头疼的,尤其是已经加了--debug参数还是没结果。结合你用的Spring Boot + MyBatis版本,我给你几个具体的排查方案:

一、调整日志级别,强制输出MyBatis的执行细节

你现在的日志只打到了INFO级别,MyBatis的SQL执行和异常信息默认不会在这个级别输出。你需要在application.properties(或application.yml)里添加这几个配置:

# 替换为你实际的Mapper接口所在包路径,打印SQL执行及参数
logging.level.com.yourpackage.shorturl.mapper=DEBUG
# 打印MyBatis底层执行细节,包括完整异常栈
logging.level.org.mybatis=TRACE
# 可选:打印Spring JDBC连接与错误处理细节
logging.level.org.springframework.jdbc=DEBUG

配置后,不管异常被哪里吞了,MyBatis底层的日志都会把错误信息完整输出。

二、手动捕获异常,打印完整栈信息

有时候Spring的异常处理器或框架封装会把异常吞掉,这时候最直接的办法是在代码块外层加try-catch,强制打印异常栈:

try {
    System.out.println("sourceMapper = " + sourceMapper); 
    Source source = sourceMapper.findByHost(host); 
    System.out.println("source = " + source); 
} catch (Exception e) {
    // 推荐用日志框架打印,能整合到系统日志体系中
    log.error("根据Host查询Source失败,Host值为: {}", host, e);
    // 临时调试也可以直接打控制台
    e.printStackTrace();
    // 若需要上层处理异常,记得重新抛出:throw e;
}

注意一定要把异常对象e作为日志方法的第三个参数传入,这样才会打印完整的异常栈轨迹,而不是只输出一句错误描述。

三、检查全局异常处理器是否吞了异常

如果你的项目里有@ControllerAdvice标注的全局异常处理类,检查是不是处理逻辑只返回了错误响应,但没有打印日志。比如这类代码就会导致异常“静默消失”:

@ControllerAdvice
public class GlobalExceptionHandler {
    @ExceptionHandler(Exception.class)
    @ResponseBody
    public Result handleException(Exception e) {
        // 只返回错误结果,未记录日志
        return Result.fail("系统错误");
    }
}

这种情况需要在方法里添加日志输出:log.error("全局捕获未处理异常", e);。

四、确认MyBatis的日志实现配置正确

有时候MyBatis的日志实现未适配Spring Boot的日志框架,也会导致日志输出失败。你可以在mybatis-config.xml里明确指定日志实现:

<configuration>
    <settings>
        <setting name="logImpl" value="SLF4J"/>
    </settings>
</configuration>

如果没有单独的mybatis-config.xml,也可以在application.properties中配置:

mybatis.configuration.log-impl=org.apache.ibatis.logging.slf4j.Slf4jImpl

从你提供的日志来看,Spring已经加载了SQL错误码配置,但因为异常被吞掉,所以没打印具体错误。按照上面的方法调整后,应该就能看到完整的异常栈和SQL执行细节了。

内容的提问来源于stack exchange,提问作者Chloe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:25:10