List ls = this.getHibernateTemplate().executeFind(new HibernateCallback<Object>() { @Override public Object doInHibernate(Session session) throws HibernateException, SQLException { return session.createSQLQuery(sql).list(); } });
String hql = "from EsbServiceV v where v.providerApp = "+ user.getApplicationId() +" and v.enabledFlag = 'Y'"; int rows = pageQueryParameter.getRows(); // 获取每页显示的条数 final int firstResult = (pageQueryParameter.getPage() - 1) * rows; final int maxResults = rows; final String hq = hql; List<EsbServiceV> list = getHibernateTemplate().executeFind(new HibernateCallback<Object>() { public Object doInHibernate(Session session) throws HibernateException, SQLException { Query query = session.createQuery(hq); query.setFirstResult(firstResult); query.setMaxResults(maxResults);// 定义返回的记录数 List list = query.list(); return list; } });
1.
package com.techson.boct.dao; import java.io.Serializable; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.hibernate.Criteria; import org.hibernate.HibernateException; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.criterion.CriteriaSpecification; import org.hibernate.criterion.DetachedCriteria; import org.hibernate.criterion.Projections; import org.hibernate.impl.CriteriaImpl; import org.springframework.dao.DataAccessException; import org.springframework.orm.hibernate3.HibernateCallback; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; import com.techson.boct.page.PagerModel; public class BaseDao<T> extends HibernateDaoSupport{ public void delete(T o) { this.getHibernateTemplate().delete(o); } public void insert(T o) { this.getHibernateTemplate().save(o); } public T select(Class cls, Serializable id){ return (T) this.getHibernateTemplate().get(cls, id); } public void update(T o) { this.getHibernateTemplate().update(o); } public List<T> getAll(String className) { String queryString = "from "+className; return this.getHibernateTemplate().find(queryString); } public List<T> getAllByQuery(String queryString) { return this.getHibernateTemplate().find(queryString); } public Query getQuery(final String queryStr) throws DataAccessException { Query query = (Query) getHibernateTemplate().execute( new HibernateCallback() { public Object doInHibernate(Session session) { return session.createQuery(queryStr); } }); return query; } public List<T> getListByQuery(final String queryString,final int pageSize,final int pageIndex) { // Query query = this.getHibernateTemplate().getSessionFactory().getCurrentSession().createQuery(queryString); Query query = getQuery(queryString); query.setFirstResult(pageIndex * pageSize); query.setMaxResults(pageSize); return query.list(); } public List<T> findByProperty(String className, String propertyName, Object value) throws Exception { String queryString = "from "+className+" where "+propertyName+" =?"; return this.getHibernateTemplate().find(queryString,value); } public int findByCriteriaCount(final DetachedCriteria detachedCriteria){ return (Integer) getHibernateTemplate().execute(new HibernateCallback() { public Object doInHibernate(Session session)throws HibernateException { Criteria criteria = detachedCriteria.getExecutableCriteria(session); return ((Integer) criteria.setProjection(Projections.rowCount()).uniqueResult()).intValue(); } }, true); } public Map<String,Object> findPageByCriteria(final DetachedCriteria detachedCriteria,final int pageSize,final int pageIndex)throws Exception { return (Map<String,Object>) getHibernateTemplate().execute(new HibernateCallback() { public Object doInHibernate(Session session)throws HibernateException { Criteria criteria = detachedCriteria.getExecutableCriteria(session); List items = criteria.setFirstResult(pageIndex).setMaxResults(pageSize).list(); int totalCount = items.size(); if(totalCount >= pageSize){ //移除order chanHo 20080415 List orderEntrys=null; Field field=null; CriteriaImpl impl = (CriteriaImpl) criteria; try { field = CriteriaImpl.class.getDeclaredField("orderEntries"); field.setAccessible(true);//这是关键:) orderEntrys = (List)field.get(impl); field.set(criteria,new ArrayList()); } catch (Exception e) { e.printStackTrace(); } criteria.setProjection(null); criteria.setFirstResult(0).setMaxResults(1); totalCount = ((Integer) criteria.setProjection(Projections.rowCount()).uniqueResult()).intValue(); criteria.setProjection(null); criteria.setProjection(null); criteria.setResultTransformer(CriteriaSpecification.ROOT_ENTITY); //恢復order , 不過不建議重用detachedCriteria ,目前Criteria有很多問題!後面的代碼可以注釋掉 /* List innerOrderEntries = null; try { innerOrderEntries = (List)field.get(criteria); } catch (Exception e) { e.printStackTrace(); } for(int i=0;i<orderEntrys.size();i++){ innerOrderEntries.add(orderEntrys.get(i)); } */ } Map reyurnMap = new HashMap<String,Object>(); reyurnMap.put("count", totalCount); reyurnMap.put("page", items); return reyurnMap; } }, true); } public List<T> findPageByCriteriaOrderBy(final DetachedCriteria detachedCriteria,final int pageSize,final int pageIndex)throws Exception { return (List<T>) getHibernateTemplate().execute(new HibernateCallback() { public Object doInHibernate(Session session)throws HibernateException { Criteria criteria = detachedCriteria.getExecutableCriteria(session); List items = criteria.setFirstResult(pageIndex * pageSize).setMaxResults(pageSize).list(); return items; } }, true); } public List<T> findByCriteria(DetachedCriteria detachedCriteria) throws Exception { return this.getHibernateTemplate().findByCriteria(detachedCriteria); } public Map<String,Object> findPageByQuery(final String queryStr,final int pageSize,final int pageIndex)throws Exception { return (Map<String,Object>) getHibernateTemplate().execute( new HibernateCallback() { public Object doInHibernate(Session session)throws HibernateException { Query query = session.createQuery(queryStr); List items = query.setFirstResult(pageIndex * pageSize).setMaxResults(pageSize).list(); long totalCount = items.size(); if(totalCount == pageSize || totalCount==0){ int fromIndex = queryStr.toLowerCase().indexOf("from"); int orderIndex = queryStr.toLowerCase().indexOf("order"); String countQueryStr = ""; if(orderIndex!=-1){ countQueryStr = "select count(*) " + queryStr.substring(fromIndex,orderIndex); }else{ countQueryStr = "select count(*) " + queryStr.substring(fromIndex); } Query CountQuery = session.createQuery(countQueryStr); totalCount = (Long)CountQuery.uniqueResult(); System.out.println("totalCount=" + totalCount); }else if(totalCount>0 && totalCount<pageSize){ totalCount = pageSize * pageIndex + totalCount; } Map reyurnMap = new HashMap<String,Object>(); reyurnMap.put("count", totalCount); reyurnMap.put("page", items); return reyurnMap; } }, true); } public PagerModel<T> findPageByCriteria(final int offset, final int pageSize,final DetachedCriteria detachedCriteria) throws Exception { return (PagerModel<T>)getHibernateTemplate().execute(new HibernateCallback() { public Object doInHibernate(Session session)throws HibernateException { Criteria criteria = detachedCriteria.getExecutableCriteria(session); List items = criteria.setFirstResult(offset).setMaxResults(pageSize).list(); int totalCount = items.size(); if(totalCount>=pageSize) { List orderEntrys=null; Field field=null; CriteriaImpl impl = (CriteriaImpl) criteria; try { field = CriteriaImpl.class.getDeclaredField("orderEntries"); field.setAccessible(true);//这是关键:) orderEntrys = (List)field.get(impl); field.set(criteria,new ArrayList()); } catch (Exception e) { e.printStackTrace(); } criteria.setProjection(null); criteria.setFirstResult(0).setMaxResults(1); totalCount = ((Integer) criteria.setProjection(Projections.rowCount()).uniqueResult()).intValue(); criteria.setProjection(null); criteria.setProjection(null); criteria.setResultTransformer(CriteriaSpecification.ROOT_ENTITY); } else { List orderEntrys=null; Field field=null; CriteriaImpl impl = (CriteriaImpl) criteria; try { field = CriteriaImpl.class.getDeclaredField("orderEntries"); field.setAccessible(true);//���ǹؼ� orderEntrys = (List)field.get(impl); field.set(criteria,new ArrayList()); } catch (Exception e) { e.printStackTrace(); } criteria.setProjection(null); criteria.setFirstResult(0).setMaxResults(1); totalCount = ((Integer) criteria.setProjection(Projections.rowCount()).uniqueResult()).intValue(); } PagerModel<T> pm = new PagerModel<T>(); pm.setTotal(totalCount); pm.setDatas(items); pm.setPageSize(pageSize); return pm; } },true); } }
具体实例:
删除:
public void deleteTypeEQ2(Long id ,String type){ String hql = "delete from CompareHotel h where h.type = ? and h.hotelid = ?" ; Query query = getBaseDao().getQuery(hql); query.setLong(1, id); query.setString(0, type); query.executeUpdate(); log.info("deleteTypeEQ2 delete ok."); }
public List<CompareHotel> findByIdAndType(String countryCode,String type) throws SystemException{ String hql = "from CompareHotel h where h.type = "+type+" and h.countrycode = '" + countryCode+"'"; Query query = this.getBaseDao().getQuery(hql); return query.list(); } public void deleteAll(String countrycode) throws SystemException { String hql = "delete from CompareHotel gh where gh.countrycode = ?"; Query query = getBaseDao().getQuery(hql); query.setString(0, countrycode); query.executeUpdate(); } public List<Agentmarket> findById(long id)throws SystemException{ DetachedCriteria detachedCriteria = DetachedCriteria.forClass(Agentmarket.class); detachedCriteria.add(Expression.eq("agent.internalid", id)); List<Agentmarket> agentmarket = this.getBaseDao().findByCriteria(detachedCriteria); return agentmarket; } public List<CompareHotel> findByhotelIdAndType(Long id,String type) throws SystemException{ DetachedCriteria detachedCriteria = DetachedCriteria.forClass(CompareHotel.class); detachedCriteria.add(Expression.eq("hotelid",id)); detachedCriteria.add(Expression.eq("type",type)); List<CompareHotel> l = (List<CompareHotel>)this.getBaseDao().findByCriteria(detachedCriteria); return l; }
public int deleteAllByPackageId(List<Long> packageId) { String hql=" delete from PackageHotel ph where ph.packageId in (:packageId) "; Query query = this.baseDao.getQuery(hql); query.setParameterList("packageId", packageId); int num = query.executeUpdate(); return num; } public Query getQuery(final String queryStr) throws DataAccessException { Query query = (Query) getHibernateTemplate().execute( new HibernateCallback() { public Object doInHibernate(Session session) { return session.createQuery(queryStr); } }); return query; }
public List<Hotelbookheader> findBysfno(String sfno) throws SystemException { String hql = " FROM Hotelbookheader hbh where hbh.sfno =:sfno"; Query query = this.getBaseDao().getQuery(hql); query.setParameter("sfno", sfno); List<Hotelbookheader> list = query.list(); if (list.size() > 0) { return list; } else { return null; } }
。。。
相关推荐
在Java开发领域,Hibernate是一个非常重要的对象关系映射(ORM)框架,它简化了数据库操作,使得开发者可以更专注于业务逻辑而不是底层的数据访问。`BaseDAO`是许多项目中常见的一种设计模式,它代表了数据访问对象...
- 由于多数据源的存在,BaseDAO需要扩展以适应不同的数据源,可能需要在方法内部或者构造函数中传递当前的数据源别名。 3. **分页功能**: - 分页是大数据量查询时必不可少的功能,MyBatis提供了PageHelper插件来...
通过ORM,开发者可以使用Java对象来操作数据库,而无需编写SQL语句,从而降低了开发难度和维护成本。 2. **BaseDAO设计原理** BaseDAO通常包含一组通用的数据库操作方法,如增删改查(CRUD:Create、Read、Update...
在Java的持久化框架Hibernate中,BaseDAO(Base Data Access Object)是一种常见的设计模式,用于封装数据库操作,提供一套标准的方法来实现CRUD(Create、Read、Update、Delete)操作。这种模式使得业务层可以更加...
说明:因为我们在实际编码中会编写一些重复的数据库操作方法CRUD,每个类都写一次感觉很繁琐,因此可以考虑考虑把所有公共的方法都写在BaseDao中,这个时候,让所有的DAO都继承BaseDao;这样基本上就实现了大量的...
涵盖通过hibernate进行数据库操作的通用方法
Hibernate作为ORM框架,主要负责数据库的持久化操作。在SSH整合中,我们只需关注对象与数据库表之间的映射配置,确保对象关系的正确映射。Spring的自动管理使得我们可以专注于业务逻辑,而无需直接操作Hibernate API...
标题和描述中指出的文档《Struts+Spring+Hibernate开发实例.pdf》包含了关于这三个流行的Java开源框架结合使用的示例代码和相关知识点。Struts负责视图与控制器部分,Spring负责业务逻辑层及依赖注入,Hibernate负责...
NC65通过BaseDAO操作数据库,包含接口类及接口实现类: /** * 获取baseDAO * @return */ public BaseDAO getBaseDAO() { if(baseDAO == null){ baseDAO = new BaseDAO(); } return baseDAO; } public ...
"基于BaseDao的手动数据库操作"是一个常见的话题,尤其在Java开发中。BaseDao是一种设计模式,它通常被用来作为数据库访问对象(DAO)的基础,用于封装数据库的基本CRUD(创建、读取、更新、删除)操作。这种模式...
它提供了强大的查询语言HQL(Hibernate Query Language)以及Criteria API,使得开发者可以以面向对象的方式来操作数据库。 当Spring和Hibernate集成时,Spring可以管理Hibernate的SessionFactory和Session对象,...
在Java的持久层框架Hibernate中,BaseDAO(基础数据访问对象)是常用的设计模式,用于封装对数据库的基本操作。在给定的“hibernate basedao(泛型版本)”中,开发人员通过引入泛型进一步提高了代码的复用性和灵活...
在IT行业中,Spring和Hibernate是两个非常重要的框架,Spring是一个全面的后端开发框架,而Hibernate则是一个对象关系映射(ORM)工具,主要用于数据库操作。当我们将它们整合在一起时,可以实现强大的数据访问能力...
综上所述,nc65系统提供了丰富的数据库操作方法,无论是后台还是前台,都可以根据具体需求选择合适的方式进行数据的查询、新增、更新或删除等操作。同时,nc65也考虑到了安全性问题,提供了防止SQL注入的功能,确保...
这使得开发者能够以一种标准化的方式访问数据库,而无需关心底层数据库的具体实现细节。 #### BaseDao通用类 在本例中,`BaseDaoOutput`类主要负责以下功能: 1. **数据库连接**:`BaseDaoOutput`类通过`open...
本项目结合了Spring 4和Hibernate 4,旨在提供一个基础的数据访问层(DAO)实现,包括基本的CRUD操作(创建、读取、更新、删除)以及分页功能。以下是关于这个项目的详细知识点: 1. **Spring 4**:Spring框架是...
在Java项目中,我们通常会将这个jar包添加到项目的类路径中,以便执行SQL查询和操作数据库。 2. SQL Server:由微软公司开发,是一个功能强大的企业级数据库系统。对于Java开发者,需要Microsoft的JDBC驱动(如sql...
Hibernate 是一个对象关系映射(ORM)框架,它允许开发者用Java对象的方式来操作数据库。在Spring的封装下,开发者只需要关注对象的映射配置和业务逻辑,而无需过多关注底层的SQL操作。在本例中,正确地设置实体类和...