Как отобразить ошибки SQL из Spring и MyBatis? - PullRequest
0 голосов
/ 11 мая 2018

У меня есть следующий код, который я запустил в отладчике с --debug, но он не выведет никаких ошибок SQL.Он молча завершается с исключением и возвращается из запроса сервлета.

    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

1 Ответ

0 голосов
/ 11 мая 2018

Вы можете добавить try/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());
...