今天遇到一个问题,要在mybatis的语句中把string传入in,如果用#{} ,则会被解析成一个参数,比如:
#('aa,bb,cc'),网上有一个解决方法,使用“${}”解决,不过#{} 传入参数可以预防sql注入攻击,而“${}”不行,所以不推荐该方法。
我自己想了一个笨方法,如果能确定in的选项个数不多,10个以内,可以采用逐个添加,比如:
xxx xxx(...
@Param("aa") String aa,
@Param("bb") String bb,
@Param("cc") String cc
...);
in (#{aa},#{bb},#{cc})
这样就万无一失了。
探讨在MyBatis中使用IN语句时,如何安全地传递多个字符串参数,避免SQL注入风险。介绍了#{}
2418





