今天遇到一个问题是在navicat中运行的sql语句能够查询数据,但是放到ibatis查询到的日志为0条,日志如下。
JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@4e8b6160] will not be managed by Spring
==> Preparing: SELECT sum(acc)**************ROUP BY model
==> Parameters: 2021-04-01(String), 2021-04-05(String)
<== Total: 0
瞪着眼睛检查了很久才发现问题。我在sql中某个表没有指定是在哪个数据库查询。但是navicat中查询都有默认数据库。但是我在程序中配置的默认数据库不是这个数据库。因此把查询的格式全部改成数据库名.数据表名,问题就解决了
结论:ibatis有bug。在一般情况下,没有指定正确数据库ibatis会报错Exception“找不到数据表”。但是,在某些比较长的sql语句中(各种内连接、in嵌套查询等),ibatis就不报错了!非常坑!如果发现查到的条数为0还是需要手动检查库名和表名对不对