閱讀441 返回首頁    go 阿裏雲 go 技術社區[雲棲]


ibatis中的模煳查詢


看兩個最基本的語句

①select * from student where name like 'xy'
②select * from student where naem like '%xy%'

兩個語句都是用了like,貌似都是模煳查詢的樣子。其實①實際上是一個完全匹配的查詢,與用等號寫成如下語句是一致的。①語句等價於select * from student where name = 'xy'。這就給在ibatis寫模煳查詢語句帶來啟示。


例子一

<dynamic prepend="where">
 <isNotNull prepend="AND" property="id">
  id = #id#
 </isNotNull>
 <isNotNull prepend="AND" property="name">
  name like #name#
 </isNotNull>
</dynamic>

該例子與①語句錯誤相同

 

例子二

<dynamic prepend="where">
 <isNotNull prepend="AND" property="id">
  id = #id#
 </isNotNull>
 <isNotNull prepend="AND" property="name">
  name like '%#name#%'
 </isNotNull>
</dynamic>

報錯:java.sql.SQLException: Invalid argument in JDBC call: parameter index out of range: 1

 

例子三 正確

<dynamic prepend="where">
 <isNotNull prepend="AND" property="id">
  id = #id#
 </isNotNull>
 <isNotNull prepend="AND" property="name">
  name like '%$name$%'
 </isNotNull>
</dynamic>

"$"操作符相當於在SQL語句被轉變為參數化語句之前,將值插入該語句

 

最後更新:2017-04-04 07:32:06

  上一篇:go ibatis動態語句中的prepend
  下一篇:go J2EE中自定義標簽以及TagSupport和BodyTagSupport的用法