使用参数绑定的好处:
1.可读性提高 2.效果高3.防止sql注入漏洞
参数绑定的两种形式:
以查询年龄小于18岁的学生为例
①参数以:冒号形式给出
List<Student> list = session.createQuery(from Student where id=:i and age<:age).setString("i","1").setString("age","18").list();
这种绑定方式的setXxx方法的第一个参数只能是之前命名的参数,参数名可以随便起,但建议和原属性名一致
②参数以?形式给出
List<Student> list = session.createQuery(from Student where id=? and age<?).setString(0,"1").setString(1,"18").list();
这种绑定方式的setXxx方法的第一个参数表示?的位置,hql是从0开始的,而jdbc的预编译命令对象PreparedStatement的参数是从1开始的
③绑定参数时也可以分开来绑定
Query query = session.createQuery(from Student where id=? and age<?);
query.setString(0,"1");
query.setString(1,"18");
List<Student> list = query.list();