场景介绍:
传给dao层的参数是sql字符串,要求在mapper.xml执行此sql字符串返回结果。
使用${sqlstr}可以实现,但有注入风险。
解决办法:
使用sql代码块执行。
<select id="selectSql" parameterType="java.lang.String" resultType="java.util.Map">
begin
declare @sqlstr nvarchar(2000);
set @sqlstr =#{sql,jdbcType=VARCHAR}
execute (@sqlstr);
end;
</select>
其中,#{}里的参数sql是传入的参数key。