MyBatis 引數型別為String時常見問題及解決方法
阿新 • • 發佈:2018-12-20
- 引數為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>
- 對字串引數進行是否相等 比較時的問題
錯誤:
<if test="_parameter == '1' "> type=#{_parameter} </if>
正確:
<if test='_parameter == "1" '> type=#{_parameter} </if> <if test="_parameter == '1'.toString() "> type=#{_parameter} </if>