当前位置: 代码迷 >> J2EE >> Hibernate 通用查询解决方案
  详细解决方案

Hibernate 通用查询解决方案

热度:22   发布时间:2016-04-17 23:42:22.0
Hibernate 通用查询
本帖最后由 u012527031 于 2014-09-05 11:47:53 编辑
public List<Resources> query(String sql, String[] param) throws Exception {

return null;
}
求大神写个方法给我,实在写不出来了。。  
------解决思路----------------------
//按id查找
public List<Comment> findCommentId(int cid) {
List<Comment> findId = template.find("from Comment u where u.cid='"+cid+"'");
if(findId==null
------解决思路----------------------
findId.size()<=0){
return null;
}


return findId;
}

public List<Comment> queryForPage(String hql, int offset, int length) {
 Query q = template.getSessionFactory().openSession().createQuery(hql);
         q.setFirstResult(offset);
         q.setMaxResults(length);
        return q.list();
}

------解决思路----------------------
@Override
public List<T> find(String hql, Map<String, Object> params) {
Query q = getCurrentSession().createQuery(hql);
if (params != null && !params.isEmpty()) {
for (String key : params.keySet()) {
q.setParameter(key, params.get(key));
}
}
return q.list();
}

------解决思路----------------------
几年前的代码...翻出来给你

package crm.dao;

import java.sql.SQLException;
import java.util.List;

import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

public class QueryDAO extends HibernateDaoSupport{
public List queryByPage(
final String hql,
final Integer currentPage,
final Integer pageSize,
final Object ...objects){

//回调
return getHibernateTemplate().executeFind(
//匿名类 实现接口
new HibernateCallback(){
public Object doInHibernate(Session session)
throws HibernateExceptionSQLException {
Query query=session.createQuery(hql);
if(currentPage!=null && pageSize!=null){
query.setFirstResult((currentPage-1) * pageSize);
query.setMaxResults(pageSize);
}

if(objects!=null){
for (int i = 0; i < objects.length; i++) {
query.setParameter(i, objects[i]);
}
}
return query.list();
}

});
}


public List queryByHQL(String hql,Object...objects){
return queryByPage(hql,null,null,objects);
}

public Object queryByUnique(String hql,Object...objects){
List list= queryByHQL(hql,objects);
return list!=null && list.size()>0?list.get(0):null;
}
}




------解决思路----------------------
package com.aohy.dao.impl;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.stereotype.Repository;

import com.aohy.dao.BaseDaoI;

@Repository("baseDao")
public class BaseDaoImpl<T> implements BaseDaoI<T> {
@Resource
private SessionFactory sessionFactory;

private Session getCurrentSession() {
return sessionFactory.openSession();
}

@Override
public Serializable save(T o) {
return this.getCurrentSession().save(o);
}

@Override
public T get(Class<T> c, Serializable id) {
return (T) this.getCurrentSession().get(c, id);
}

@Override
public T get(String hql) {
Query q = this.getCurrentSession().createQuery(hql);
List<T> l = q.list();
if (l != null && l.size() > 0) {
return l.get(0);
}
return null;
}

@Override
public T get(String hql, Map<String, Object> params) {
Query q = this.getCurrentSession().createQuery(hql);
if (params != null && !params.isEmpty()) {
for (String key : params.keySet()) {
q.setParameter(key, params.get(key));
}
}
List<T> l = q.list();
if (l != null && l.size() > 0) {
return l.get(0);
}
  相关解决方案