1. 问题描述
Java操作数据库的两台流行天王-mybatis和hibernate,mytabis和hibernate的区别不想废话了,以前用hibernate,最近几年一直用的mybatis,目前Java连接数据库的方式基本都是preparedstatement,留好占位符,根据前端传入进行sql拼接,每个项目中总有那么几个:参数多,又是大于等于,又是日期转换,又是模糊查询的Sql,导致在数据库报错报错后,定位问题比较困难。
Idea开启Debug模式,日志打印示例(示例比较简单,能说明问题就好):
[http-nio-9107-exec-1] JDBC Connection [com.alibaba.druid.proxy.jdbc.ConnectionProxyImpl@f3a2023] will not be managed by Spring [http-nio-9107-exec-1] ==> Preparing: select * from hp_config where status ='1' and type = ? ORDER BY type [http-nio-9107-exec-1] ==> Parameters: 2(String)
2. 解决方案
使用mybatis插件神器:MyBatis Log Plugin,参数自动赋值到占位符中,生成数据库可执行SQL,将SQL复制到数据库中执行,就能很快定位到问题了。
2.1 插件安装
2.2 插件效果及说明
插件可以在Idea的Tools下点击启动,也可以使用快捷键启动(ctrl+shift+alt+o)。
需特别说明的是:
要以Debug模式启动应用,并且日志级别也要是Debug。