1. 程式人生 > >MyBatis 引數型別為String時常見問題及解決方法

MyBatis 引數型別為String時常見問題及解決方法

  1. 引數為String時的插值問題  假設有下面一Dao介面方法  public Converttce getClassEnergyCoal(String energyType)throws DaoException;  對應的Mapper.xml
    <select id="getClassEnergyCoal" parameterType="java.lang.String" resultType="com.skd.ems.converttce.Converttce">
      select *
      form en_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="getClassEnergyCoal" parameterType="java.lang.String" resultType="com.skd.ems.converttce.Converttce">
      select *
      form en_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>