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