ibatis中dynamic的用法

dynamic可以去除第一個prepend=”and”中的字符(這裏爲and),從而可以幫助你實現一些很實用的功能。具體情況如下:

1.使用dynamic

1.1 xml

select * from Person
        <dynamic prepend="where"> 
                <isNotNull property="name" prepend="and">
                    name=#name#
                </isNotNull>
                <isNotNull property="sex" prepend="and">
                    sex=#sex#
                </isNotNull>               
        </dynamic>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

1.2 結果

當name、sex都非null時打出如下的sql語句:

select  Person  where (and) name= ? , and sex= ?
  • 1

顯然name前的and被自動去除了,很方便吧。

2.不使用dynamic

2.1 xml 
如果我把dynamic 去掉就會變的很噁心,如下:

select * from Person       
                <isNotNull property="name" prepend="and">
                    name=#name#
                </isNotNull>
                <isNotNull property="sex" prepend="and">
                    sex=#sex#
                </isNotNull>     
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

2.2 結果 
當name、sex都非null時打出如下的sql語句:

select  Person where and name= ? , and sex= ?
  • 1
  顯然name前多個and,sql語句錯誤。
  • 1
  • 2

3.總結 
dynamic 會自動去除第一個 prepend=”and中的內容(這裏爲and),從而方便一些操作。

轉自 https://blog.csdn.net/jzy23682891/article/details/7094788
  1. dynamic可以去除第一個prepend="and"中的字符(這裏爲and),從而可以幫助你實現一些很實用的功能。具體情況如下:
  2. 1.使用dynamic
  3. 1.1 xml
  4. select * from Person表
  5. <dynamic prepend="where">
  6. <isNotNull property="name" prepend="and">
  7. name=#name#
  8. </isNotNull>
  9. <isNotNull property="sex" prepend="and">
  10. sex=#sex#
  11. </isNotNull>
  12. </dynamic>
  13. 1.2 結果
  14. 當name、sex都非null時打出如下的sql語句:
  15. select Person表 where (and) name= ? , and sex= ?
  16. 顯然name前的and被自動去除了,很方便吧。
  17. 2.不使用dynamic
  18. 2.1 xml
  19. 如果我把dynamic 去掉就會變的很噁心,如下:
  20. select * from Person表
  21. <isNotNull property="name" prepend="and">
  22. name=#name#
  23. </isNotNull>
  24. <isNotNull property="sex" prepend="and">
  25. sex=#sex#
  26. </isNotNull>
  27. 2.2 結果
  28. 當name、sex都非null時打出如下的sql語句:
  29. select Person表 where and name= ? , and sex= ?
  30. 顯然name前多個and,sql語句錯誤。
  31. 3.總結
  32. dynamic 會自動去除第一個 prepend="and中的內容(這裏爲and),從而方便一些操作。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章