hibernate中Query的用法
来源:互联网 发布:淘宝旺旺如何设置 编辑:程序博客网 时间:2024/04/30 13:24
hibernate中Query的用法
通过SessionFactory获得了session对象后,除了可以通过get(类名.class, id)方法得到相应的对象,还可以通过获得Query对象来取得需要的对象
Query query = session.createQuery("查询语句如from UserBean");
List list = query.list();//得到一个集合
也可以用query.uniqueResult();//得到一个单个的对象
分页查询:
query.setFirstResult(位置如0);//表示从哪个位置开始查询,返回query对象
query.setMaxResult(记录条数);//表示当页共几条记录,返回一个集合
session.createQuery("select count(*) from 类名").uniqueResult();//得到记录总数
查询语句同sql查询语句很想象,只是将表名换作类名,字段名换作属性名,如果查询需要条件可以使用占位符来替换对应的属性名,也可以使用:变量名来作为占位符。
一个分页查询:
public QueryResult<T> list(final Class<T> clazz, final int index, final int count,
final String wherehql, final Object[] params,final Map<String, String> orderby) {
final QueryResult<T> qr = new QueryResult<T>();
hibernateTemplate.executeFind(new HibernateCallback<T>() {
@Override
public T doInHibernate(Session session) throws HibernateException,
SQLException {
Query query = session.createQuery(
"from " + getEntityName(clazz) + " o " + (StringUtils.isBlank(wherehql) ? "": "where "+ wherehql)
+ buildOrderby(orderby));
setQueryParams(query, params);
if(index != -1 && count != -1){
query.setFirstResult(index);
query.setMaxResults(count);
}
List<T> list = query.list();
qr.setRecords(list);
query = session.createQuery(
"select count(*) from " + getEntityName(clazz) + " o " + (StringUtils.isBlank(wherehql) ? "": "where "+ wherehql));
setQueryParams(query, params);
long totalrecord = 0;
Object total = query.uniqueResult();
if(total != null){
totalrecord = Long.valueOf(total.toString());
}
qr.setTotalCount(totalrecord);
return (T) list;
}
});
return qr;
}
/**
* 给hql语句中的where子句中的参数赋值
* @param query
* @param queryParams
*/
protected void setQueryParams(Query query, Object[] queryParams){
if(queryParams!=null && queryParams.length>0){
for(int i=0; i<queryParams.length; i++){
query.setParameter(i, queryParams[i]);
}
}
}
/**
* 创建hql语句的order by子句
* @param orderby
* @return
*/
protected String buildOrderby(Map<String, String> orderby){
StringBuffer orderbyql = new StringBuffer("");
if(orderby!=null && orderby.size()>0){
orderbyql.append(" order by ");
for(String key : orderby.keySet()){
orderbyql.append("o.").append(key).append(" ").append(orderby.get(key)).append(",");
}
orderbyql.deleteCharAt(orderbyql.length()-1);
}
return orderbyql.toString();
}
- hibernate中Query的用法
- hibernate中Query的用法
- hibernate中Query的用法
- hibernate的Criteria Query 用法
- hibernate中核心接口Query的用法简介
- Hibernate中query.setFirstResult() 和 query.setMaxResults用法
- hibernate query用法
- hibernate中Query的list()和interate()方法比较和用法
- Hibernate中Query.list()和Query.iterator()的区别
- Hibernate中query的常用方法
- Hibernate中Query对象的使用
- Hibernate中设置query参数的方法
- 关于hibernate中query的查询
- hibernate中query和sqlquery的区别
- hibernate中query的使用详解
- Hibernate中query的常用方法
- Hibernate中设置query参数的方法
- Hibernate中Query.uniqueResult();
- 关于报错 'Could not instantiate class named NSLayoutConstraint
- C#中容器控件GroupBox、Panel、TabControl的应用
- 说说JSON和JSONP,也许你会豁然开朗,含jQuery用例
- OpenCL开发案例学习
- buntu和XP互相远程连接
- hibernate中Query的用法
- ubuntu下配置VIM做PHP的IDE开发环境
- 智能指针 shared_ptr
- linux并发控制之原子操作
- 元数据的理解
- 认识指针
- 杂项
- tomcat工作原理
- Struts2中Action中动态调用,为什么出错了???