现在各种持久层框架如:hibernate,springdata jpa,mybatis对使用了占位符的sql输出是没有显示完整的sql语句的,所以如果想获取到完整的sql,除了在db层做配置外,也有单独在jdbc层做此功能的项目如:log4jdbc项目。
mysql开启sql的方式:
windows环境下my.ini[mysqld]
log = "c:\log.txt" #所有查询语句
#log-slow-queries="c:\slow-log.txt" #慢查询
#long_query_time=3 #(3秒) #慢查询时间
linux下的修改my.cnf[mysqld]
general_log_file = /usr/local/mysql/mysql.log
general_log = 1
修改后必须重启mysql服务才会生效。
log4jdbc执行的截图:
可以看到hibernate的输出占位符为?,而log4jdbc则输出了完整的sql查询
mysql的sql查询输出截图: