1. 代碼
xml 文件
<select id="configTemps" resultType="hashmap">
SELECT id,
name,
template_content
from t_a_notify_template
where template_class = #{param1}
<if test=" #{param2}!= null ">
AND template_type_id = #{param2}
</if>
</select>
Mapper 層
List<Map<String,Object>> configTemps(String templateClass, String templateTypeId);
2. 分析原因
代碼量很少,原因比較明顯,是說我的比較兩邊類型不同而導致的錯誤,一個是map,一個是string。
而我做了比較的地方就一個,講道理是沒啥問題的 一個string類型 判空
<if test=" #{param2}!= null ">
這次因爲偷懶沒有使用@param 註解到mapper的參數上,所有需要使用#{param1}~#{paramN}來調用參數。
突然想到是不是寫法有問題
改成如下
<if test=" #{param2 != null} ">
一測試,果然成功。
-------------------------------------------------------------------------------------------------
geng更新:
代碼寫暈了 。正常是不帶#{}做比較的
<if test="param2 != null and param2 !='' ">