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

iBATIS使用$和#的一些理解

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

我們在使用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數據庫當然是不會執行的。那我們只有繞開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 (?,?)   

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

#會根據變量的類型來進行替換

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

$articleTitle$ = 標題

#articleTitle# = '標題'

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

【編輯推薦】

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

2009-07-21 09:55:45

iBATIS分頁

2022-12-27 09:56:34

架構系統

2013-08-21 13:47:29

PhoneUDIDUUID

2013-07-18 16:16:51

2017-04-08 17:12:36

設計模式抽象策略模式

2012-06-15 11:02:31

架構師

2016-11-16 21:18:42

android日志

2020-09-29 10:42:30

kurbernetes開發云原生

2021-10-12 23:10:58

UnsafeJavaJDK

2022-09-01 11:02:42

前端工具

2018-07-30 08:41:48

VueReact區別

2012-11-09 10:46:24

Canonical

2009-12-01 09:06:36

VS2003 ajax

2021-06-18 07:35:46

Java接口應用

2010-05-10 15:41:38

Unix系統

2023-11-10 08:48:09

Lombok庫Java8

2015-08-17 15:53:58

Linux桌面

2022-04-02 14:43:59

Promethues監控

2023-10-09 08:14:10

Helm管理應用

2009-11-27 13:04:16

VS2005遠程調試
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久精品免费一区二区三 | 久久中文字幕视频 | 成人午夜电影在线观看 | 我要看黄色录像一级片 | 亚洲一区二区久久 | 精品伦精品一区二区三区视频 | 国产亚洲一区二区三区 | 久草欧美| 九九国产 | 亚洲国产高清高潮精品美女 | 久久久精品一区 | 亚洲国产精品一区二区三区 | 精品在线一区二区 | 日韩av在线播 | 日韩欧美在线视频观看 | 精品国产欧美日韩不卡在线观看 | 精品日韩一区二区 | 蜜桃传媒av | 久久久久亚洲精品 | 人人九九精| 久久爱一区 | 欧美一区二区三区四区五区无卡码 | 国产激情免费视频 | 精品欧美一区二区三区久久久 | 97精品超碰一区二区三区 | 91视频网址 | 国产精品久久福利 | 精品国产一区二区三区av片 | 亚洲一区二区三区在线观看免费 | 91亚洲国产成人久久精品网站 | 91在线视频播放 | 成在线人视频免费视频 | 99re视频在线| 播放一级毛片 | 三a毛片| 国产999精品久久久 日本视频一区二区三区 | 免费欧美 | 中文字幕成人 | 午夜久久久 | 日韩在线电影 | 日韩aⅴ在线观看 |