`
mxl0632
  • 浏览: 17039 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

hibernate做模糊查询时需注意

阅读更多
今天做了sql防注入的修改,关于项目中模糊查询发现了一个小问题,致使程序运行不报错,但是无法显示结果 ,心里那个万马奔腾,狂冒汗。不扯了,看看原因:

if (trueOrFalse) {
sql.append(" and c.bacth_pk like ?");
str +="'%" + batchNo + "%',";
}

上面的是错误的代码,想表达的含义是,sql是拼接的语句,str是拼接的参数,然后遍历str动态的给sql占位符赋值,实现防注入。
问题出在了str +="'%" + batchNo + "%',";中。
仔细看单引号,如果在拼接sql中直接使用是没问题的,单在hibernate中是如下使用才正确的。
if (trueOrFalse) {
sql.append(" and c.bacth_pk like ?");
str +="%" + batchNo + "%,";
}
仔细看str +="%" + batchNo + "%,";中没有单引号才能执行成功。


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics