和同事一块定位一个问题的时候,打印出来的sql是对的,但是执行的不对,由于使用的是namedParameter,所有不是真实执行的sql,最终调试发现,在AbstractBatcher类里面
在真正的执行sql语句:
public ResultSet getResultSet(PreparedStatement ps) throws SQLException { ResultSet rs = ps.executeQuery(); resultSetsToClose.add(rs); logOpenResults(); return rs; }
如下图所示,com.mchange.v2.c3p0.impl.NewProxyResultSet对象持有的creator的toString方法打印出了sql,当然了dialect不同,可能不是所有的数据库dialect都能拿到sql,但是大同小异。
:
![](http://dl.iteye.com/upload/attachment/0070/4054/dcfa042e-b1ea-33b3-99b1-163ad681fea1.png)