场景介绍:
传给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。
本文介绍了一种通过在MyBatis中使用SQL代码块安全执行动态SQL的方法,避免了使用${}
3902

被折叠的 条评论
为什么被折叠?



