動態(tài)Mapped Statement在iBATIS中應(yīng)用
動態(tài)Mapped Statement是如何在iBATIS中應(yīng)用呢?讓我們先看看實例:
Java代碼
- ﹤select id="dynamicGetAccountList" cacheModel="account-cache" resultMap="account-result"﹥
- select * from ACCOUNT
- ﹤isGreaterThan prepend="and" property="id" compareValue="0"﹥
- where ACC_ID=#id#
- ﹤/isGreaterThan﹥
- order by ACC_LAST_NAME
- ﹤/select﹥
例子說明:
如果值小于0,那么sql語句就是:
Java代碼
- select * from ACCOUNT
- order by ACC_LAST_NAME
動態(tài)Mapped Statement應(yīng)用更復(fù)雜的例子:
Java代碼
- ﹤select id="dynamicGetAccountList" resultMap="account-result"﹥
- select * from ACCOUNT
- ﹤dynamic prepend="WHERE"﹥
- ﹤isNotNull prepend="AND" property="firstName"﹥
- (ACC_FIRST_NAME=#firstName#
- ﹤isNotNull prepend="OR" property="lastName"﹥
- ACC_LAST_NAME=#lastName#
- ﹤/isNotNull﹥
- )
- ﹤/isNotNull﹥
- ﹤isGreaterThan prepend="and" property="id" compareValue="0"﹥
- ACC_ID=#id#
- ﹤/isGreaterThan﹥
- ﹤/dynamic﹥
- order by ACC_LAST_NAME
- ﹤/select﹥
動態(tài)Mapped Statement實例注解:
prepend:可被覆蓋的SQL語句組成部分
property:被比較的屬性
compareProperty:另一個用于和前者比較的屬性
compareValue用于比較的值
﹤isEqual﹥
﹤isNotEqual﹥
﹤isGreaterThan﹥
﹤isGreaterEqual﹥
﹤isLessThan﹥
﹤isLessEqual﹥
﹤isPropertyAvailable﹥:檢查是否存在該屬性
﹤isNotPropertyAvailable﹥:
﹤isNull﹥:檢查屬性是否為null
﹤isNotNull﹥
﹤isEmpty﹥:檢查Collection.size()的值,屬性String或String.valueOf()值是否為null或空
﹤isNotEmpty﹥:
﹤isParameterPresent﹥:檢查是否存在參數(shù)對象(不為null)
﹤iterate﹥遍歷集合:
Java代碼
- ﹤iterate prepend="and" property="userNameList" open="(" close=")" conjunction="or"﹥
- username=#userNameList[]#
- ﹤/iterate﹥
property屬性:類型為java.util.List的用于遍歷的元素
open屬性:整個遍歷內(nèi)容開始的字符串,用于定義括號
close屬性:整個便利內(nèi)容結(jié)束的字符串
conjunction:每次遍歷內(nèi)容之間的字符串,用于定義AND或OR
動態(tài)Mapped Statement在iBATIS中的應(yīng)用就向你介紹到這里,對它了解些了么?
【編輯推薦】