1. 程式人生 > >mybatis的parameterType 為基本型別或包裝型別時,如何使用

mybatis的parameterType 為基本型別或包裝型別時,如何使用

當mapper中的parametType為基本型別或包裝型別(如int(java.lang.Integer),string等)時,是怎樣使用的

最簡單的使用方法:

    <select id="list" parameterType="string"  resultMap="ClassroomResultMap">
        select id, name
        from bc
        where name = #{name}
    </select>

這裡的引數#{}中寫什麼變數名都可以,mybatis會自動給賦值。而當使用if語句時,比如

    <select id="list" parameterType="string"  resultMap="ClassroomResultMap">
        select id, name
        from bc
        <where>
            <if test="name != null and <span style="font-family: Arial, Helvetica, sans-serif;">name</span> != ''">
                name like CONCAT('%','${name}','%')
            </if>
        </where>
    </select>

會報錯

org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.ReflectionException: There is no getter for property named ‘name’ in ‘class java.lang.String’

原因:

mybatis自動呼叫OGNL尋找String的name屬性
解決辦法:

1、使用_parameter

<select id="list" parameterType="string"  resultMap="ClassroomResultMap">
   select id, name
   from bc
   <where>
      <if test="_parameter != null and _parameter != ''">
         name like CONCAT('%','${name}','%')
      </if>
   </where>
</select>

2、使用mybatis預設的物件名:value

<select id="list" parameterType="java.lang.Integer"  resultMap="ClassroomResultMap">
   select id, name
   from bc
   <where>
      <if test="value != null and value != ''">
         id = #{value}
      </if>
   </where>
</select>