現在項目中使用ibatis作為數據庫操作工具,在深感ibatis功能強大的同時,一直也在為如何寫出動態SQL而困惑,自己也是在一點點的摸索中,現在發現prepend這個小工具確實不錯,下面就是在項目中自己摸索的幾個小用法。
1:通常用法,也是大多數參考文章上面介紹的方法
xml 代碼
-
<
dynamic
?
prepend
=
"where"
>
????? ??
-
??????
<
isNotEmpty
?
prepend
=
"and"
?
property
=
"csendUserId"
>
????? ??
-
??????????
csendUserId
?=?#csendUserId#?????? ??
-
??????
isNotEmpty
>
????? ??
-
??
dynamic
>
???
?
2:通常用法的小小擴充,在里面增加一個and
xml 代碼
-
<
dynamic
?
prepend
=
"where"
>
????? ??
-
????
<
isNotEmpty
?
prepend
=
"and"
?
property
=
"csendUserId"
>
????? ??
-
????????
csendUserId
?=?#csendUserId#?????? ??
-
????????and?????? ??
-
????????
isenddr
?=?
0
????? ??
-
????
isNotEmpty
>
????? ??
-
dynamic
>
???? ??
?
3:在數據庫表連接處使用,自己以前從來沒有過的想法:)
xml 代碼
-
<
dynamic
?
prepend
=
"left?outer?join?cms_user?U?on?"
>
????? ??
-
????
<
isNotEmpty
?
prepend
=
""
?
property
=
"creceiveUserid"
>
????? ??
-
????????
M.csendUserId
?=?U.pk_user?????? ??
-
????
isNotEmpty
>
????? ??
-
dynamic
>
????
?
4:檢索條件處使用,動態增加檢索條件
xml 代碼
-
<
dynamic
?
prepend
=
""
>
????? ??
-
????
<
isNotEmpty
?
prepend
=
""
?
property
=
"creceiveUserid"
>
????? ??
-
????????,csendUserId?????? ??
-
????????,U.VTRUENAME?as?sendUserName?????? ??
-
????
isNotEmpty
>
????? ??
-
dynamic
>
???? ??
-
??
?
需要注意的是,檢索的時候,如果動態檢索條件的話,需要增加remapResults="true"