自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

iBATIS使用$和#的一些理解

開發(fā) 后端
iBATIS使用$和#的一些理解,給我們講解了在SQL中的一些使用體會,希望這些鐵灰對你有所幫助。

我們在使用iBATIS時會經(jīng)常用到#這個符號。

比如:

sql 代碼

  1. select * from member where id =#id# 

然后,我們會在程序中給id這個變量傳遞一個值,iBATIS會自動將#id#轉(zhuǎn)成我們傳遞的內(nèi)容。

但是我最近碰到一個奇怪的問題。我在批量刪除或修改的時候,居然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。但是數(shù)據(jù)卻沒有任何的修改。

后來查找了半天,原來原因就是這個#的問題。因為iBATIS默認會把“#”中間的變量作為字符串來處理。這樣,就會出現(xiàn)這樣的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數(shù)據(jù)庫當然是不會執(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);    
  6.  

生成的SQL:

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

$中間的變量就是直接替換成值的

#會根據(jù)變量的類型來進行替換

比如articleTitle的類型是string, 值是"標題"的時候

$articleTitle$ = 標題

#articleTitle# = '標題'

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

【編輯推薦】

  1. Struts2.0+ibatis2.3***整合實例之映射淺析
  2. Struts2.0+ibatis2.3整合實例實現(xiàn)服務層及Struts
  3. Struts2.0+ibatis2.3整合實例實現(xiàn)UI層淺析
  4. iBATIS入門程序六大步詳解
  5. iBATIS DAO事務淺析
責任編輯:仲衡 來源: 飛揚編程
相關(guān)推薦

2009-07-21 09:55:45

iBATIS分頁

2022-12-27 09:56:34

架構(gòu)系統(tǒng)

2013-07-18 16:16:51

2013-08-21 13:47:29

PhoneUDIDUUID

2012-06-15 11:02:31

架構(gòu)師

2017-04-08 17:12:36

設計模式抽象策略模式

2016-11-16 21:18:42

android日志

2020-09-29 10:42:30

kurbernetes開發(fā)云原生

2021-10-12 23:10:58

UnsafeJavaJDK

2022-09-01 11:02:42

前端工具

2009-12-01 09:06:36

VS2003 ajax

2012-11-09 10:46:24

Canonical

2018-07-30 08:41:48

VueReact區(qū)別

2021-06-18 07:35:46

Java接口應用

2010-05-10 15:41:38

Unix系統(tǒng)

2023-11-10 08:48:09

Lombok庫Java8

2023-10-09 08:14:10

Helm管理應用

2015-08-17 15:53:58

Linux桌面

2022-04-02 14:43:59

Promethues監(jiān)控

2011-07-13 10:12:56

SQL語句優(yōu)化操作符優(yōu)化
點贊
收藏

51CTO技術(shù)棧公眾號