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 结果

     当name、sex都非null时打出如下的sql语句: select Person where (and) name= ? , and sex= ?  

     显然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>     

 

 

2.2 结果 

      当name、sex都非null时打出如下的sql语句: select Person where and name= ? , and sex= ? 

      显然name前多个and,sql语句错误。 

 

3.总结 

      dynamic 会自动去除第一个 prepend="and中的内容(这里为and),从而方便一些操作。