2019独角兽企业重金招聘Python工程师标准>>>
之前项目使用 mybtis 来做ORM ,,,它有自带的 sql输出,或者第三方插件都很好的输出 显示执行的SQL和结果。 甚至可以 使用 mybtis的 拦截器进行自定义格式化SQL的输出。
目前这个项目 使用 hibernate3 来开发。项目也比较老。。。 控制台 显示出来的SQL语句又丑又长, 而且 查询的参数是 带 ? 号的,真是难看。。。 刚开始想使用 druid 连接池 来显示SQL 出来控制的,可是发现 druid 不兼容 hibernate3 ..兼容性太差了, 要不就是没有 达到效果。。。
虽然 hibernate 可以 格式化SQL,可是还是不够好看,下面是 例子比较的:
配置 显示格式化的SQL
<prop key="hibernate.show_sql">
true
</prop>
<prop key="hibernate.format_sql">true</prop>
下面是控制台的比较: 看得出来, p6spy 更好,还可以用在 mybtis
Hibernate:
select
smslog0_.id as id110_,
smslog0_.content as content110_,
smslog0_.create_time as create3_110_,
smslog0_.phone as phone110_,
smslog0_.return_msg as return5_110_,
smslog0_.send_time as send6_110_,
smslog0_.sms_no as sms7_110_,
smslog0_.status as status110_
from
sms_log smslog0_
where
smslog0_.status=?
order by
smslog0_.id asc
2017-09-19 16:30:30|0|commit|connection 26||
2017-09-19 16:30:30|43|statement|connection 27|select smslog0_.id as id110_, smslog0_.content as content110_, smslog0_.create_time as create3_110_, smslog0_.phone as phone110_, smslog0_.return_msg as return5_110_, smslog0_.send_time as send6_110_, smslog0_.sms_no as sms7_110_, smslog0_.status as status110_ from sms_log smslog0_ where smslog0_.status=? order by smslog0_.id asc
select smslog0_.id as id110_,
smslog0_.content as content110_,
smslog0_.create_time as create3_110_,
smslog0_.phone as phone110_,
smslog0_.return_msg as return5_110_,
smslog0_.send_time as send6_110_,
smslog0_.sms_no as sms7_110_,
smslog0_.status as status110_
from
sms_log smslog0_
where
smslog0_.status=0
order by
smslog0_.id asc
我就换成了 p6spy 试试,按照网上的百度出来的教程,,,很快就集成进行了,经过测试 兼容 hibernate3 。没有问题啊。。。而且可以自定义格式化SQL 。等等其他功能也有。 挺方便好用的。。。 只是 集成的时候,要把 spy.properties 放在 classes 的 根目录下面,也就是 resource 里面,或者是 src下面,不要随便乱丢,否则 找不到的,就启动报错了。。。 还有就是 配置路径要写对了。 基本 集成进来无压力没难度,,,对应我们只是用来查看SQL 来说够用了,其他可以不用管先
#jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.driverClassName=com.p6spy.engine.spy.P6SpyDriver
hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
hibernate.show_sql=false
hibernate.hbm2ddl.auto=none
#jdbc.url=jdbc\:mysql\://localhost\:3306/rpdp2p?useUnicode\=true&characterEncoding\=UTF-8
jdbc.url=jdbc:p6spy:mysql://localhost:3306/rpdp2p?useUnicode=true&characterEncoding=UTF-8
jdbc.username=root
jdbc.password=123456
jdbc.initialPoolSize=10
jdbc.minPoolSize=10
jdbc.maxPoolSize=100
jdbc.maxIdleTime=20
jdbc.acquireIncrement=20
bug
我用了一段时间之后,发现,如果是查询语言都可以 记录下来,插入语句也可以, 但是如果是 更新SQL就没有显示出来,也是郁闷了,不知道是本来就这样还是哪里没有配置好。