之前这个动态sql一直没有效果,
<statement id="searchBookByName" parameterClass="book" resultClass="book">
SELECT * FROM book
<dynamic prepend="where">
<isNotNull>
name like #name#
</isNotNull>
</dynamic>
</statement>
测试时我把book的name设为null,用p6spy查看输出的sql为:
SELECT * FROM book where name like ''
后来在官方文档上看到“property - 被比较的属性(必选)”,于是改成
<statement id="searchBookByName" parameterClass="book" resultClass="book">
SELECT * FROM book
<dynamic prepend="where">
<isNotNull propety="name">
name like #name#
</isNotNull>
</dynamic>
</statement>
果然正常了。
ps:如果在dtd中有这个检查或者ibatis解析这样的xml会报错,我就不用疑惑两天了。
特此为记!