我做了這個方法對我的通用DAO休眠的createQuery()準備發言
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()方法,使每一個擴展抽象genericDAO類使用DAO這種方法具有不同的參數。
因此,例如,UserDAO將使用此方法的參數column =「userName」和input = userName.getText()<這是一個文本字段。
一個RecordDAO可以用柱= recordName和輸入=「甲殼蟲」
我對這種方法的幾個問題使用它。
它會像現在一樣工作嗎?我可以在我的creatQuery中使用2個setParameter()方法和參數嗎?
在此代碼中使用setParameter幫助代碼變得更安全嗎?如果在程序的「文本框」框中輸入SQL代碼而不是用戶名,是否仍有人能夠執行SQL注入攻擊?
有沒有一種更有效的方法來製作一個像這樣的多功能find()方法?
getSingleResult()在沒有找到任何東西時正在返回什麼?空值?