在使用 hibernate 進行資料庫操作的時候可以顯示出所執行的 sql 語句,相信用 hibernate 的兄弟姐妹們都知道怎麼設定。就設定 hibernate.show_sql 或者 show_sql 屬性為 true 就行,在 hibernate.cfg.xml 或者與 spring 整合時配置在 spring 的配置檔案中。再就是要讓顯示的 sql 語句是格式化的,就配置 hibernate.format_sql 或是 format_sql 為 true,否則總在一行中執行。hibernate 顯示的 sql 語句好像是通過 system.out.println() 直接輸出的。
hibernate 大部份時候是通過 preparedstatement 來執行 sql 語句的,它的好處是可預處理、被快取,可防止注入。只是這樣讓 hibernate 執行的 sql 語句輸出到控制台是帶問號的,如: 01
02
03
04
05
06
07
08
09
10
11
hibernate:
select
formtempla0_.id
as
id6_,
formtempla0_.
name
as
name6_,
formtempla0_.title
as
title6_,
formtempla0_.finish_message
as
finish4_6_,
formtempla0_.promotion_code
as
promotion5_6_
from
footnotedpro.form_templates formtempla0_
where
formtempla0_.
name
=?
我們有時候很想知道此時繫結給這個 ?號具體是什麼值,但預設情況下在日誌中是沒有顯示出來的,因為輸出它的 level 級別是 trace,而我們用 log4j 或 slf4j 開發時預設級別一般最低也是 debug,也就是要為這一輸出指定日誌的 level 為 trace。
針對我所用的 hibernate 3.6.0,如果是用 log4j 輸出日誌就在 log4j.properties(log4j.xml 參照此) 中配置:
1
log4j.logger.org.hibernate.type.descriptor.sql.basicbinder=trace
如果用的是 slf4j + logback 的話,就在 logback.xml 中配置:
1
<
logger
name
=
"org.hibernate.type.descriptor.sql.basicbinder"
level
=
"trace"
/>
有了這個 trace 配置,在輸出上面 sql 語句後還會顯示出每個引數所繫結的值,如:
第乙個引數繫結的值是 varchar 型別的 "gt",如果有更多的引數依次顯示下去。
如果 hibernate 的版本不是 3.6.0 話,可能配置略有不同,有些文章介紹說把下面兩個包的 trace 開啟,即:
1
2
log4j.logger.org.hibernate.type=trace
log4j.logger.org.hibernate.sql=trace
logback 中的配置請參照上面。這時候你不僅看到了查詢前的繫結值,連查詢出來的每乙個字段值都有了:
還有更冗餘的 hibernate 初始化的資訊,所以你應該在 org.hibernate.type 和 org.hibernate.sql 這兩個包的 trace 基礎上,觀察日誌輸出來緊縮要 trace 的包。
參考:1. 顯示hibernate的sql語句引數值
2. 在控制台中顯示hibernate列印的sql中的引數
利用UNION ALL顯示出合計
利用union all顯示出合計 專案中常常會有合計項,通常是通過計算出某列,然後在此列的最後顯示出合計。慣用的手法是通過union all來無意義連線。例子 達到如下效果 sql sql select from t union all select 合計 sum amt from t 特別需要注意...
JSON陣列遍歷 在到div顯示出內容
html id myid div id myday div var bb var item 遍歷陣列 for迴圈 for var i 0 i item bb i day item myid html item var listday 遍歷陣列for in for var i in bb myday ...
QBC資料查詢 hibernate之查詢語句
敘 之前介紹過hibernate的hql hibernate query language 的查詢資料方式,現在我學習記錄一下關於hibernate的另乙個查詢資料的方式 qbc,qbc資料查詢全稱是 query by criteria資料查詢 下面是我學習的筆記 qbc query by crit...