ibatissql語句
1. IBatis 怎樣直接執行sql語句
ibatis中,參數部分是用##表示的,這種格式的是字元串,會自動在內容兩端加上單引號,$$表示的是原樣輸出,你這里有兩個參數,且要求的是數值,所以要用$$,那麼在ibatis的xml配置文件中,寫法就是:
select *
from table
limit $count1$, $count2$.
而在java中,通過調用ibatis框架中的方法,將count1和count2變數的值傳遞進去就可以了。
2. ibatis與sql語句的轉換
在ibatis 中,SQL語句經常會出現一些特殊符號,比如:> < 等符號,在xml中會被轉義,解析時會出錯
這樣可以使用 <![CDATA[ SQL內容 ]]> 進行常量標識,這樣裡面的SQL內容會以文本的形式存在 ,不會被解析
如:
<![CDATA[
select CASE
WHEN b.mo_number + b.mt_number = 0 THEN
'---'
ELSE
to_char(round((a.mo_number + a.mt_number - b.mo_number -
b.mt_number) / (b.mo_number + b.mt_number),
4) * 100) || '%'
END flow_rate_of_change
from al;
]]>
另外,還有ibatis 中:> 可以表示大於號,< 表示小於號
如: where score > 90 表示:where score > 90
希望可以幫到你
3. ibatis的sql語句,大神們來看一下
oracle 中的rownum是個偽列,只有在有結果集的時候才有值;
內層先找到 rownum<=xxx 值:(rownum從1開始) 找到第一條記錄 rownum =1, 1<=xxx正確,則返回該條記錄,直到找到rownum= xxx的最後一條記錄為止,因此內層 存在結果集了並且rownum還是從1(或者maxResult值)開始的值,因此,可以對著這個子查詢 進行rownum>xxx操作了;
舉個反例:表A中有100條數據
select * from a where rownum >= 50 and rownum <59;(該語句看似能查出10條記錄,但是它一條記錄也不會查出來)
分析:
先查找第一條記錄 rownum 賦值為1 此時,1 <59 但是 1並不大於等於50 條件不符,
繼續查找下一條 rownum 賦值為1 此時,1 <59 但是 1並不大於等於50 條件不符
直到 查詢整個庫 ,結果是沒有符合條件的記錄,因此就查不到記錄了;
select * from (select rownum from a where rownum< 59) where rownum >=50
select rownum from a where rownum< 59
先查找第一條記錄 rownum 賦值為1 此時,1 <59 條件符和,
繼續找第二條記錄 rownum此時賦值為2 ,2<59 條件符合,
直到 找到rownum = 58的記錄為止,此時找到了所有符合條件的值,並且rownum是從1到58設值的, 此時就可以使用 >=50這個條件 將記錄選出了;
------------------------------------
row_ 是子查詢的一個別名,,
4. SQL語句在ibatis中xml中的寫法
ibatis的xml中的sql寫法跟在資料庫工具的寫法差不多,max(ts_object_op_log.create_time)可以直接max(create_time),應該是resultClass這里出了問題。resultClass = "java.util.HashMap 、java.lang.String 、java.lang.Long "等,貌似不能直接寫一個變數名。
5. 如何設置ibatis 後台列印完整的sql語句
#將ibatis log4j運行級別調到DEBUG可以在控制台列印出ibatis運行的sql語句
log4j.rootLogger=debug,stdout,logfile