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 !='' ">