国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
在iBATIS中正確的使用$和#

我們在使用iBATIS時會經常用到#這個符號。

比如:
 

sql 代碼
  1. select * from member where id =#id#  
然后,我們會在程序中給id這個變量傳遞一個值,iBATIS會自動將#id#轉成我們傳遞的內容。

但是我最近碰到一個奇怪的問題。我在批量刪除或修改的時候,居然SQL失效了。

SQL如下:
 
sql 代碼
  1. update user set flag=#flag# where id in (#id#)  
  2.   
  3. delete from user where id in (#id#)  

傳遞的id為1,2,3。但是數據卻沒有任何的修改。

后來查找了半天,原來原因就是這個#的問題。因為iBATIS默認會把“#”中間的變量作為字符串來處理。這樣,就會出現這樣的SQL
 

sql 代碼 
  1. update user set flag='1' where id in ('1,2,3')  
  2.   
  3. delete from user where id in ('1,2,3')  

這樣的SQL數據庫當然是不會執(zhí)行的。那我們只有繞開iBATIS了嗎?

其實不用,iBATIS其實還提供了另外一種方式,那就是使用$來傳遞值。你使用$將你的變量括起來,iBATIS不會給這個變量做任何的處理,直接生成你要的SQL

sql 代碼

  1. update user set flag=$flag$ where id in ($id$)  
  2.   
  3. update user set flag=1  where id in (1,2,3)  
  4.   
  5. delete from user where id in ($id$)  
  6.   
  7. delete from user where id in (1,2,3)  

 

還可以用ibatis的iterate解決:
SQL:

  1. <select id="test" parameterClass="java.util.List" resultClass="test.Roadline">   
  2.     select * from SYS_ROAD_LINE_INFO where ROAD_LINE_NO in    
  3.     <iterate open="(" close=")" conjunction=",">   
  4.         #value[]#   
  5.     </iterate>   
  6. </select>  
  1. List list = new ArrayList();   
  2. list.add("aaa");   
  3. list.add("bbb");   
  4.                
  5. List rsList = sqlMap.queryForList("roadline.test", list);  


生成的sql:

  1. select * from SYS_ROAD_LINE_INFO where ROAD_LINE_NO in (?,?)  

$中間的變量就是直接替換成值的
#會根據變量的類型來進行替換
比如articleTitle的類型是string, 值是"標題"的時候
$articleTitle$ = 標題
#articleTitle# = '標題'

如果一個字段的名字不規(guī)范帶有#,那么在<select ...> select name# from reader where id=#id#...</select>語句中會報錯,我看過有人問過這個問題,說是name####但是還是不能解決無法對帶#的字段的查詢。 解決辦法肯定是有的。比如,你可以把這個字段當做一個參數來傳遞給ibatis。然后用$$把這個變量括起來。

本站僅提供存儲服務,所有內容均由用戶發(fā)布,如發(fā)現有害或侵權內容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
使用ibatis時 sql中 in 的參數賦值
iBatis與Mybatis的區(qū)別對比
IBatis.net動態(tài)SQL語句
ibatis動態(tài)sql
mybatis一次執(zhí)行多條SQL語句
SQL語句處理 單表中重復數據
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯系客服!

聯系客服