java - 如何显示来自 Spring 和 MyBatis 的 SQL 错误?
问题描述
我在调试器中运行了以下代码,--debug
但它不会打印出任何 SQL 错误。它会以异常方式静默失败并从 servlet 请求返回。
System.out.println("sourceMapper = " + sourceMapper);
Source source = sourceMapper.findByHost(host);
System.out.println("source = " + source);
这是输出
2018-05-11 13:47:58.080 INFO 29392 --- [nio-8080-exec-2] c.s.shorturl.apis.ShortUrlApiController : Method name: doUrlRequest() user agent is = curl/7.59.0
sourceMapper = org.apache.ibatis.binding.MapperProxy@30a1e904
2018-05-11 13:47:58.359 INFO 29392 --- [nio-8080-exec-2] o.s.b.f.xml.XmlBeanDefinitionReader : Loading XML bean definitions from class path resource [org/springframework/jdbc/support/sql-error-codes.xml]
2018-05-11 13:47:58.489 INFO 29392 --- [nio-8080-exec-2] o.s.jdbc.support.SQLErrorCodesFactory : SQLErrorCodes loaded: [DB2, Derby, H2, HSQL, Informix, MS-SQL, MySQL, Oracle, PostgreSQL, Sybase, Hana]
2018-05-11 13:47:58.541 DEBUG 29392 --- [nio-8080-exec-2] o.s.b.w.f.OrderedRequestContextFilter : Cleared thread-bound request context: org.apache.catalina.connector.RequestFacade@645ec595
如何打印遇到的 SQL 错误?或者找出它失败的原因以及异常是什么?
MyBatis 3.4.5、MyBatis Spring 1.3.1、MyBatis Spring Boot Autoconfigure 1.3.1、MyBatis Spring Boot Starter 1.3.1、Spring Boot 1.5.6
解决方案
您可以在代码周围添加 atry/catch
并记录捕获的异常:
try {
System.out.println("sourceMapper = " + sourceMapper);
Source source = sourceMapper.findByHost(host);
System.out.println("source = " + source);
} catch (Exception e) {
// log using slf4j's Logger
logger.error("An exception caught", e);
// or print it to standard output
e.printStackTrace();
}
某处应该有一个Logger
实例(可能在同一个类中):
private final Logger logger = LoggerFactory.getLogger(this.getClass());
推荐阅读
- objective-c - 我可以在 Objective-C 中给属性一个备用键名吗?
- python - “无法找到一组匹配的功能”与硒
- racket - 运行 Arc 时,Racket 中的“找不到模块路径的集合:mzscheme”
- c# - 没有构造函数的依赖注入asp.net核心
- c# - 控制器参数将 DateTime 反序列化为 UTC
- c# - 我正在使用 VEctor2 进行破折号移动,但它不会移动角色
- node.js - 我们如何使用通过 axios 将请求接收到的数据放在 mern 堆栈的客户端?
- ruby-on-rails - before_action 具有相同的回调但不同的条件不起作用
- python - Tkinter:单击按钮时如何将按钮的文本作为参数传递给函数
- html - 居中 div 元素