背景:
开发中有时会遇到各种事,比如项目组有Utils类方法,解析脚本后得到一个较长的sql语句,通过原生jdbc的原生ps方法查询时查不到数据的情况。
首先个人肯定是不建议在Utils里解析脚本后拼接sql的,存在sql注入的危险。
那如何用myabtis动态生成sql(整个sql都是动态的,不确定性非常大,sql来源于脚本),又得防止sql注入问题?
最好的办法还是在脚本生成的步奏进行限制,对某些关键字进行限制,保存时进行过滤。
现在项目赶着上线,ps出现了映射问题,查询交给了mybatis去查询,参数只有一个,就是这个解析后的sql,返回结果为hashmap(属性和值都不确定)
需要注意的是$符号,因为整个sql语句里一定存在关键符号,防止被转义使用${str}把原sql完整设置上去。
mapper接口里要加上@Param
最后查询结果map里只会有有值的key-value对