MyBatis 参数类型为String时常见问题及解决方法

  1. 参数为String时的插值问题 
    假设有下面一Dao接口方法 
    public Converttce getCoal(String energyType)throws DaoException; 
    对应的Mapper.xml
    <select id="getCoal" parameterType="java.lang.String" resultType="com.app.wrj.converttce.Converttce">
      select *
      form converttce
      <where>
        <if test ="type != null">
          type=#{type}
        </if>
      </where>
    </select>

    一般我们都是按这样的方式来写的,对于其他类型是没错的,但是如果为String的话会抛下面的异常: 
    There is no getter for property named ‘type ’ in ‘class java.lang.String’ 
    因为MyBatis要求如果参数为String的话,不管接口方法的形参是什么,在Mapper.xml中引用时需要改变为_parameter才能识别 :

    <select id="getCoal" parameterType="java.lang.String" resultType="com.app.wrj.converttce.Converttce">
      select *
      form converttce
      <where>
         <if test ="_parameter!= null">
          type=#{_parameter}
         </if>
      </where>
    </select>

     

  2. 对字符串参数进行是否相等 比较时的问题 
    错误:
    <if test="_parameter == '1' ">
      type=#{_parameter}
    </if>

    正确:

    <if test='_parameter == "1" '>
      type=#{_parameter}
    </if>
    <if test="_parameter == '1'.toString() ">
      type=#{_parameter}
    </if>

     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值