mybatis使用if标签判断为''和判断为0冲突


    <select id="findGdMessage" resultType="Map">
        select *from gdmessage
        <where>
            <if test="gdzt!=null and gdzt !='' or gdzt ==0 ">
                gdzt= #{gdzt}
            </if>

这段代码,本来没有添加or gdzt ==0,但是我发现当我传0的时候根本就没走where语句gdzt=0,默认查询所有了,于是我加上了or gdzt==0,这时候我有发现了一个问题,当我传0的时候会查询gdzt=0,没有问题,但是当我传空字符串理想状态下不应该走gdzt=#{gdzt}这里才对,应该查询所有,但是实际上却走了gdzt=0,这有没有什么解决方案?

你的gdzt是基本类型还是包装类型?

gdzt什么类型?如果是数字类型,那就不能用 gdzt !='' 直接 <if test="gdzt!=null > 就行了

gdzt!=null and gdzt ==0