mybatis的parameterType 為基本型別或包裝型別時,如何使用
阿新 • • 發佈:2019-01-25
當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>