java调用hibernate createQuery()prep语句
我为我的通用DAO制作了这个方法
public T find(String column, String input) {
Query query = em.createQuery("select e from " + type.getSimpleName()+ " e where e."+
":column = :input").setParameter("input", input).setParameter("column", column);
return (T)query.getSingleResult();
}
它应该是一个泛型find()方法,允许每个扩展抽象泛型DAO类的DAO使用具有不同参数的方法
例如,UserDAO将使用这个方法,参数为column=“userName”和input=userName。getText()<;这是一个文本字段
RecordDAO可以将其与column=recordName和input=“beatles”一起使用
我对这种方法有几个问题
它会像现在这样工作吗?我的creatQuery中可以有2个setParameter()方法和参数吗
在代码中使用setParameter是否有助于代码变得更安全?当某人在程序的文本框中输入SQL代码而不是用户名时,是否仍能进行SQL注入攻击
有没有更有效的方法来创建这样一个通用的find()方法
当找不到任何内容时,getSingleResult()将返回什么?空的
# 1 楼答案
1.)是的,你可以
2.)对没有
3.)取决于你的具体用例是什么
4.)你可以查看javadoc of Query#getSingleResult。提示: