hibernate使用hql时,in使用方法,
今天遇到一个sql问题,因为之前是sql中直接拼接的参数,容易sql注入攻击,改为hibernate的setParameter方法塞值。
例如:
String sql = "select * from usr u where u.name in( '" +xiaoming+"','"+xiaohong+"')";
改为:
String sql = "select * from usr u where u.name in(?,?)"
SQLQuery query = getsession.createSqlQuery(sql);
query.setParameter(0,"xiaoming");
query.setParameter(1,"xiaohong");
以上这种是没问题的,
但是我今天遇到的是前台是多选框,传过来的值是字符串;
例如:String name = "xiaoming,xiaohong"
我直接写成:
String name = "xiaoming,xiaohong"
String sql = "select * from usr u where u.name in(?)"
query.setParameter(0,name );
这个结果就会出错,具体原因还没查出来,后续弄清楚原因,在更新