mybatis中使用if语句遇到的问题

最近在公司学着用mybatis写项目代码,之前也没有用过mybatis,原来只是接触过一点hibernate。这个项目使用的是springmvc框架,用mybaitis来写数据库的操作语句。下面说一个在用if过程中遇到的问题。下面的代码经过了改写,本意不变。

说一下流程,前端点击进入初始化界面,这个时候到数据库查询记录然后返回到前端,生成表格来展示数据。接收的是一个DTO类,初始化时什么都没有输入。下面是代码:

 

public class TempDTO{
   private long tempId;
   private String tempName;
   private int frequence;

   public void setTempId(long tempId){
        this.tempId=tempId;
}
   public long getTempId(){
        return tempId;
}
   public void setTempName(String tempName){
        this.tempName=tempName;
}
   public String getTempName(){
        return tempName;
}
   public void setFrequence(int frequence){
        this.frequence=frequence;
}
   public int getFrequence(){
        return frequence;
}
}


然后是xml的代码,Controller传递TempDTO到这里,在这里初始化查询出了问题。花了我不少时间才找出错误。

<select id="selectList" resultType="TempDTO" parameterType="TempDTO">
      select
            tempid  as  tempId,
            tempname as tempName,
            frequence as frequence
      from temp
      where 1=1
      <if test="tempName !=null">
      and tempname like '%'||#{tempName,jdbcType=VARCHAR}||'%'
       </if>
       <if test="frequence !=null">
       and frequence=#{frequence}
       </if>

上面的xml的代码是为了查询满足tempName和frequence这两个查询条件的记录,初始化的时候都是系统的默认赋值。直接查询,就是出不来结果。想了很久,测试了一下frequence的默认值,结果是0。所以未给TempDTO赋值,系统默认给int类型的变量的值是0。而我的项目中frequencede 值是1-8。所以我对frequence的限制条件不够完善。这个时候改if语句为下面的代码:

<if test="frequence !=null and frequence !=0">
and frequence=#{frequence}
</if>
这样初始化时就不会进入这个if语句,从而查询出所有的记录。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值