HQL语句编写的方式 - 个人见解,有错请指出,共同进步。
1.SimpleHibernateDao.java类
public class SimpleHibernateDao<T, PK extends Serializable> {
/**
* 根据查询HQL与参数列表创建Query对象.
*
* 本类封装的find()函数全部默认返回对象类型为T,当不为T时使用本函数.
*
* @param queryString
* 查询字符串
* @param values
* 数量可变的参数,按顺序绑定.
* @return 查询对象
*/
public Query createQuery(final String queryString, final Object... values) {
Assert.hasText(queryString, "queryString not allow null");
Query query = getSession().createQuery(queryString);
if (values != null) {
for (int i = 0; i < values.length; i++) {
query.setParameter(i, values[i]);
}
}
return query;
}
}
2.查询语句,想获取list集合中的对象是UserRole:
public List<UserRole> getAdminUserIds() {
Query query = super.createQuery(QUERY_USER_ROLE_ID);
return query.list();
}
3.SQL分析
主要看SQL语句:
private static final String QUERY_USER_ROLE_ID = "FROM UserRole ur where ur.roleId='administrator'";
这里获取的UserRole对象,可以通过bean定义的getXXX()方法获取值
private static final String QUERY_USER_ROLE_ID = "SELECT ur.id, ur.userId, ur.roleId FROM UserRole ur where ur.roleId='administrator'";
这里获取的普通的object对象。无法通过getXXX()方法获取值。只能通过寻常List集合中普通对象的取值方式获取值