需要ibatis升级到Mybatis,ibatis里用了isPropertyAvailable判断。请问在Mybatis中,有什么好的替代方案吗?
谢谢

解决方案 »

  1.   

    我通常会直接改写为
    <if test="asd != null and asd != ''">
       and #{asd} = '123'
    </if>这两种写法并不等效,当设置asd=null时会有差异,只是多数情况下可以通用。ps:我个人不推荐使用isPropertyAvailable,isPropertyAvailable本身很危险,参考它与isNotEmpty的区别,你不觉得把一个参数设置为空,来做某种判断很危险么?
      

  2.   

    确实,我也觉得isPropertyAvailable,isPropertyAvailable不好,但没有办法,待升级的代码用到了,太恶心了。感谢你给的方案,但就像你说的,还是有点不一样,我再研究下。
      

  3.   

    主要注意这两种写法就行了
    <isPropertyAvailable property="aaa">
    and bb = 1
    <isPropertyAvailable>

    <isPropertyAvailable property="aaa">
    and (#aaa# = 1 or (#aaa# is null and bb = 1))
    <isPropertyAvailable>
    这两种写法不能直接用上面的if改,需要改sql逻辑