Mybatis在mapper.xml中写条件查询语句

做系统很多时候都会使用到查询功能,但有时只是想针对某列数据进行查询,下面是我在mapper.xml中的配置。
主要说2个问题:
1.使用where 1=1是因为oid可能为null,如果不加 1=1,那么就可能出现where and id==#{id,jdbcType=INTEGER}的问题,这样语句会出错,加了 1=1就可以避免这种问题。
2.有时候数据可能为null,也有可能为"",如果只判断null,就会找不到结果,所以添加 onote != ‘’(PS:是 ’ 和 ‘,不是")。
3.对于INTEGER型数据,如果输入的参数可能为0,那么使用xxx !=’‘的话会出现把所有数据都显示出来的情况,有两种解决方法:
1)把xxx !=’'去掉,只保留xxx !=null
2)在判断语句后面添加 or xxx==0,如下面的图2那样。
通过下面这个方法,我们就不需要每个数据都有输入,只输入想要查询的条件就行。

  <select id="findPartOperate" resultType="cn.lnsf.bean.Operate" parameterType="cn.lnsf.bean.Operate">
    select * from operate where 1=1
    <if test="oid != null" >
     and oid=#{oid,jdbcType=INTEGER}
    </if>
    <if test="id != null" >
      and id=#{id,jdbcType=INTEGER}
    </if>
    <if test="time != null" >
      and time=#{time,jdbcType=TIMESTAMP}
    </if>
    <if test="onote != null and onote != ''" >
      and  onote=#{onote,jdbcType=VARCHAR}
    </if>
    <if test="ostate != null and ostate != ''" >
      and ostate=#{ostate,jdbcType=VARCHAR}
    </if>
  </select>

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值