- 参数为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>
- 对字符串参数进行是否相等 比较时的问题
错误:<if test="_parameter == '1' "> type=#{_parameter} </if>
正确:
<if test='_parameter == "1" '> type=#{_parameter} </if> <if test="_parameter == '1'.toString() "> type=#{_parameter} </if>