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 + "%,";中没有单引号才能执行成功。


猜你喜欢

转载自mxl0632.iteye.com/blog/2215305