成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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ù)庫當(dāng)然是不會執(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, 值是"標(biāo)題"的時候

$articleTitle$ = 標(biāo)題

#articleTitle# = '標(biāo)題'

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

【編輯推薦】

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

2009-07-21 09:55:45

iBATIS分頁

2022-12-27 09:56:34

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

2013-08-21 13:47:29

PhoneUDIDUUID

2013-07-18 16:16:51

2017-04-08 17:12:36

設(shè)計模式抽象策略模式

2012-06-15 11:02:31

架構(gòu)師

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

前端工具

2018-07-30 08:41:48

VueReact區(qū)別

2012-11-09 10:46:24

Canonical

2009-12-01 09:06:36

VS2003 ajax

2021-06-18 07:35:46

Java接口應(yīng)用

2015-08-17 15:53:58

Linux桌面

2022-04-02 14:43:59

Promethues監(jiān)控

2023-10-09 08:14:10

Helm管理應(yīng)用

2010-05-10 15:41:38

Unix系統(tǒng)

2023-11-10 08:48:09

Lombok庫Java8

2011-07-13 10:12:56

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

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

主站蜘蛛池模板: h视频在线免费观看 | 亚洲欧美久久 | 婷婷免费视频 | 久久国产亚洲 | 欧美日韩在线综合 | 中文在线播放 | 欧美日韩国产一区二区三区 | 中文字幕在线不卡播放 | 亚洲黄色视屏 | 亚洲精品中文字幕在线 | 精品国产一区二区在线 | 特黄色一级毛片 | 天天爽夜夜操 | 日韩综合一区 | 日韩一区二区av | 午夜视频一区二区三区 | www.久久久久久久久久久 | www.色午夜.com | 欧美一级二级在线观看 | 福利精品在线观看 | 欧美在线观看一区 | 中文字幕日本一区二区 | 亚洲欧美一区二区三区视频 | 国产精品久久久久久久久免费高清 | 亚洲成人免费av | 午夜激情影院 | 中文字幕乱码一区二区三区 | 99精品视频一区二区三区 | 中文福利视频 | 欧美一区免费 | 国产精品久久精品 | 国产激情网站 | 中文字幕国产精品 | av日韩高清| 久久久夜色精品亚洲 | 中文字幕在线免费视频 | 日韩成人免费视频 | 中文字幕在线观看日韩 | 热re99久久精品国产99热 | 99爱国产| 女女百合av大片一区二区三区九县 |