@Resource private HibernateTemplate us;
public List<User> queryUser(String username, String password) {
List<User> users = us.find("from User u where u.username = '" + username + "' and u.password = '" + password + "'");
return users;
}
"from User u where u.username = '...' and u.password = '...'" 是 Hibernate Query Language (HQL),面向**持久化類** User 而非數據庫表。HibernateTemplate 內部調用 sessionFactory.getCurrentSession() 獲取當前事務綁定的 Session。session.createQuery(hql) 生成 Query 對象。// 安全寫法
String hql = "from User u where u.username = :un and u.password = :pwd";
List<User> users = us.findByNamedParam(hql, new String[]{"un", "pwd"}, new Object[]{username, password});
query.list() 發送 SQL 到數據庫,將結果集映射為 User 對象列表(自動調用 Getter/Setter 填充屬性)。@Transactional 環境下,Session 由 Spring 管理,查詢參與當前事務(只讀優化)。// User.hbm.xml 或 @Entity
class User {
private Long id;
private String username, password;
// getter/setter
}
// 對應數據庫表 user (id, username, password)
List,無需手寫 ResultSet 解析。**絕不在生產代碼中拼接 HQL/SQL 參數!** 必須使用參數綁定 (setParameter, findByNamedParam, findByValue) 防止注入攻擊。