ibatis的sql語句
1. Ibatis裡面用in寫sql語句,問什麼報下面的錯
ibatis sql in 操作(iterate屬性)
1、使用iterate屬性,status為數組。
<isNotNull property="status">
<![CDATA[ status in ]]>
<iterate property="status" conjunction="," open="(" close=")">
#status[]#
</iterate>
</isNotNull>
2、使用$,但這種寫法存在一定的風險,可能會引起sql注入。
SELECT * FROM test WHERE status in ($status$);
2. ibatis java分頁sql語句怎麼寫
so easy 你在IDAO中創建一個方法帶兩個參數,public List<泛型> XXX(int page ,int max
Page);
DAO中實現XXX方法
this.getAqlMapClientTemplate.........queryForList("不介紹了",page
-1*maxPage,maxPage)
還有必須要有一個得到所有行數的方法,在IBATIS中寫出,之後Action定義一個if的方法
int countRow == 得到的所有行
List list = 分頁的方法
int countPage == 0
if(countRow%10==0) {
countPage = countRow/10
}else {
countPage = countRow/10+1
}
之後就是傳到頁面了
知道代碼沒用,主要要知道為什麼這么寫,第一 分頁我們必須知道有多少個消息就是count,還要根據每頁多少行數據來進行分頁,很詳細了 給最佳吧,還不懂就找我
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. IBatis 怎樣直接執行SQL語句
ibatis中,參數部分是用##表示的,這種格式的是字元串,會自動在內容兩端加上單引號,$$表示的是原樣輸出,你這里有兩個參數,且要求的是數值,所以要用$$,那麼在ibatis的xml配置文件中,寫法就是:
select *
from table
limit $count1$, $count2$.
而在java中,通過調用ibatis框架中的方法,將count1和count2變數的值傳遞進去就可以了。
5. 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
希望可以幫到你
6. 使用ibatis進行查詢,我想查詢一個欄位有多個值得時候的結果,sql語句是這樣的
從你的層傳值過來。因為是多個變數,所以要用map傳。
ibatis配置文件中寫:
select * from eadept ea where ea.deptid in (#id1#,#id2#,#id3#,#id4#)。
層裡面用map封裝:
map.put("id1","001008");
map.put("id2","001009");
map.put("id3","001010");
map.put("id4","001007");
然後把map傳過去就行。試試把!希望對你有幫助!