国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

SSH HibernateDaoImpl

2019-11-08 19:33:28
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
package com.oa.common.hibernate;import java.io.Serializable;import java.sql.SQLException;import java.util.Collection;import java.util.List;import java.util.Map;import org.hibernate.Criteria;import org.hibernate.HibernateException;import org.hibernate.Query;import org.hibernate.SQLQuery;import org.hibernate.session;import org.hibernate.criterion.Criteriaspecification;import org.hibernate.criterion.Criterion;import org.hibernate.criterion.DetachedCriteria;import org.hibernate.criterion.PRojections;import org.springframework.orm.hibernate3.HibernateCallback;import org.springframework.orm.hibernate3.support.HibernateDaoSupport;import com.oa.common.utils.PageParam;import com.oa.common.utils.PageUtil;import com.oa.common.utils.StringUtil;/** * 擴(kuò)展HibernateDaoSupport的泛型基類 * * @param <T> * 實(shí)體類型 */@SuppressWarnings("all")public class HibernateDaoImpl extends HibernateDaoSupport implements HibernateDao { /** * 刪除對(duì)象 * * @param entity * 實(shí)體類 */ @Override public void delete(final Object entity) { getSession().delete(entity); } /** * 根據(jù)實(shí)體類與ID刪除對(duì)象 * * @param clazz * 實(shí)體類 * @param id * 主鍵ID */ @Override public void delete(final Class<?> clazz, final Serializable id) { delete(get(clazz, id)); } /** * 獲取所有數(shù)據(jù) * * @param entityClass * 參數(shù)T的反射類型 */ @Override public <X> List<X> getAll(final Class<X> entityClass) { return createCriteria(entityClass).list(); } @Override public void save(Object transientInstance) { getHibernateTemplate().save(transientInstance); } @Override public void saveOrUpdate(Object transientInstance) { getHibernateTemplate().saveOrUpdate(transientInstance); } @Override public void update(Object transientInstance) { getHibernateTemplate().update(transientInstance); } @Override public Object merge(Object transientInstance) { return getHibernateTemplate().merge(transientInstance); } private boolean isNull(Serializable id) { if (id == null || id.toString().trim().length() < 1) return true; if (("Long".equals(id.getClass().getSimpleName()) || "Integer".equals(id.getClass().getSimpleName())) && Long.valueOf(id.toString()) == 0) { return true; } return false; } /** * 根據(jù)實(shí)體類與ID獲得對(duì)象 * * @param clazz * 實(shí)體類 * @param id * 主鍵ID */ @Override public <T> T load(Class<T> entityClass, Serializable id) { if (isNull(id)) return null; return (T) getHibernateTemplate().load(entityClass, id); } /** * 根據(jù)實(shí)體類與ID獲得對(duì)象 * * @param clazz * 實(shí)體類 * @param id * 主鍵ID */ @Override public <T> T get(Class<T> entityClass, Serializable id) { if (isNull(id)) return null; return (T) getHibernateTemplate().get(entityClass, id); } /** * HQL方式查詢(不建議使用) * * @param hql * 符合HQL語(yǔ)法的查詢語(yǔ)句 * @param values * 數(shù)量可變的條件值,按順序綁定 */ public <T> List<T> queryByHQL(final String hql, final Object... values) { Query query = getSession().createQuery(hql); if (values != null) { for (int i = 0; i < values.length; i++) { query.setParameter(i, values[i]); } } return (List<T>) query.list(); } /** * HQL方式查詢(建議使用) * * @param hql * 符合HQL語(yǔ)法的查詢語(yǔ)句 * @param values */ public <T> List<T> queryByHQL(final String hql, final Map<String, Object> params) { Query query = getSession().createQuery(hql); if (params != null && !params.isEmpty()) { for (String key : params.keySet()) { query.setParameter(key, params.get(key)); } } return (List<T>) query.list(); } /** * SQL方式查詢 * * @param sql * 符合SQL語(yǔ)法的查詢語(yǔ)句 * @param values * 數(shù)量可變的條件值,按順序綁定 */ public <T> List<T> queryBySQL(final Class<T> clazz, final String sql, final Object... values) { SQLQuery query = getSession().createSQLQuery(sql); if (values != null) { for (int i = 0; i < values.length; i++) { query.setParameter(i, values[i]); } } return (List<T>) query.addEntity(clazz).list(); } /** * 根據(jù)類型創(chuàng)建查詢對(duì)象 * * @param clazz * 類型 */ public Criteria createCriteria(final Class clazz) { return getSession().createCriteria(clazz); } /** * 對(duì)象化查詢 * * @param entityClass * 參數(shù)T的反射類型 * @param criterions * 數(shù)量可變的Criterion */ public Criteria createCriteria(final Class clazz, final Criterion... criterions) { Criteria criteria = getSession().createCriteria(clazz); for (Criterion c : criterions) { criteria.add(c); } return criteria; } public <T> List<T> findByCriteria(final DetachedCriteria detachedCriteria) { return (List) getHibernateTemplate().execute(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException { Criteria criteria = detachedCriteria.getExecutableCriteria(session); criteria.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY); return criteria.list(); } }); } // 用于分頁(yè)處理 public <T> List<T> findByCriteria(final DetachedCriteria detachedCriteria, final int pageSize, final int currentPage) { // 返回記錄總數(shù) int total = this.findRowCountByCriteria(detachedCriteria); return (List) getHibernateTemplate().execute(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException { Criteria criteria = detachedCriteria.getExecutableCriteria(session); if (pageSize > 0) { criteria.setMaxResults(pageSize); } if (currentPage > 0) { criteria.setFirstResult(currentPage); } criteria.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY); return criteria.list(); } }); } // 用于分頁(yè)處理 public List findByCriteriaPage(final DetachedCriteria detachedCriteria, final int pageSize, final int currentPage) { return (List) getHibernateTemplate().execute(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException { Criteria criteria = detachedCriteria.getExecutableCriteria(session); if (pageSize > 0) { criteria.setFirstResult((currentPage - 1) * pageSize); criteria.setMaxResults(pageSize); } criteria.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY); return criteria.list(); } }); } @Override public <T> T findOne(final String hql, final Object... params) { return (T) getHibernateTemplate().execute(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException, SQLException { Query hqlQuery = session.createQuery(hql); if (params != null) { for (int i = 0; i < params.length; i++) { hqlQuery.setParameter(i, params[i]); } } return hqlQuery.setMaxResults(1).uniqueResult(); } }); } public <T> T findOneCache(final String hql, final Object... params) { return (T) getHibernateTemplate().execute(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException, SQLException { Query hqlQuery = session.createQuery(hql).setCacheable(true); if (params != null) { for (int i = 0; i < params.length; i++) { hqlQuery.setParameter(i, params[i]); } } return hqlQuery.setMaxResults(1).uniqueResult(); } }); } @Override public <T> T findOneSql(final String sql, final Class<T> entityClass, final Object... params) { return (T) getHibernateTemplate().execute(new HibernateCallback() { @Override public Object doInHibernate(Session arg0) throws HibernateException, SQLException { SQLQuery sqlQuery = arg0.createSQLQuery(sql); if (params != null) { for (int i = 0; i < params.length; i++) { sqlQuery.setParameter(i, params[i]); } } if (entityClass != null) { if (Map.class.getName().equals(entityClass.getName())) { sqlQuery.setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP); } else { sqlQuery.addEntity(entityClass); } } return sqlQuery.setMaxResults(1).uniqueResult(); } }); } @Override public <T> List<T> findBySql(final String sql, final Class<T> entityClass, final Object... params) { return getHibernateTemplate().executeFind(new HibernateCallback() { public Object doInHibernate(Session arg0) throws HibernateException, SQLException { SQLQuery sqlQuery = arg0.createSQLQuery(sql); if (params != null) { for (int i = 0; i < params.length; i++) { sqlQuery.setParameter(i, params[i]); } } if (entityClass != null) { if (Map.class.getName().equals(entityClass.getName())) { sqlQuery.setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP); } else { sqlQuery.addEntity(entityClass); } } return sqlQuery.list(); } }); } public int findRowCountByCriteria(final DetachedCriteria detachedCriteria) { return ((Integer) getHibernateTemplate().execute(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException { Criteria criteria = detachedCriteria.getExecutableCriteria(session); Integer totalCount = (Integer) criteria.setProjection(Projections.rowCount()).uniqueResult(); criteria.setProjection(null); return Integer.valueOf((totalCount == null) ? 0 : totalCount.intValue()); } })).intValue(); } public <T> List<T> findByProjectionDetachedCriteria(final DetachedCriteria detachedCriteria) { return (List) getHibernateTemplate().execute(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException { Criteria criteria = detachedCriteria.getExecutableCriteria(session); criteria.setResultTransformer(CriteriaSpecification.PROJECTION); return criteria.list(); } }); } @Override public <E> void deleteCollection(Collection<E> objs) { getHibernateTemplate().deleteAll(objs); } @Override public Integer executeSql(final String sql, final Object... params) { return (Integer) getHibernateTemplate().execute(new HibernateCallback() { @Override public Object doInHibernate(Session session) throws HibernateException, SQLException { Query query = session.createSQLQuery(sql); if (params != null) { for (int i = 0; i < params.length; i++) { query.setParameter(i, params[i]); } } return query.executeUpdate(); } }); } @Override public <T> List<T> exeHqlList(String hql, int pageSize, int currentPage) { Query query = getSession().createQuery(hql); if (pageSize > 0) { query.setFirstResult((currentPage - 1) * pageSize); query.setMaxResults(pageSize); } query.setCacheable(true); return query.list(); } @Override public <E> void saveOrUpdate(Collection<E> objs) { getHibernateTemplate().saveOrUpdateAll(objs); } @Override public void updateHqlQuery(String hql) { Query query = getSession().createQuery(hql); query.setCacheable(true); query.executeUpdate(); } @Override public <X> List<X> findByHql(String hql, Object... params) { return (List<X>) getHibernateTemplate().find(hql, params); } @Override public <T> T execute(final String hql, final Object... params) { return (T) getHibernateTemplate().execute(new HibernateCallback() { @Override public Object doInHibernate(Session session) throws HibernateException, SQLException { Query query = session.createQuery(hql); if (params != null) { for (int i = 0; i < params.length; i++) { query.setParameter(i, params[i]); } } return query.executeUpdate(); } }); } @Override public List findPageBySql(final String sql, final Map<String, Object> sqlParamMap) { final PageParam pageParam = PageUtil.getPageParam(); // 計(jì)算總算 if (!StringUtil.required(pageParam.getTotalSql())) { int index = PageUtil.indexOf(sql.toLowerCase(), " from "); int endIndex = PageUtil.indexOf(sql.toLowerCase(), " order "); if (endIndex == -1) { endIndex = sql.length(); } pageParam.setTotalSql("select count(*) " + sql.substring(index, endIndex)); } pageParam.setTotalRow((Integer) this.getHibernateTemplate().execute(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException, SQLException { Query query = session.createSQLQuery(pageParam.getTotalSql()); if (sqlParamMap != null && sqlParamMap.size() > 0) { query.setProperties(sqlParamMap); } return StringUtil.toInt(query.setProperties(sqlParamMap).uniqueResult()); } })); // 分頁(yè)數(shù)據(jù) return this.getHibernateTemplate().executeFind(new HibernateCallback() { @Override public List doInHibernate(Session session) throws HibernateException, SQLException { SQLQuery query = session.createSQLQuery(pageParam.getOrderBy(sql)); if (sqlParamMap != null && sqlParamMap.size() > 0) { query.setProperties(sqlParamMap); } if (pageParam.getEntityClass() != null) { query.addEntity(pageParam.getEntityClass()); } else { // 預(yù)設(shè)為MAP query.setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP); } return query.setFirstResult(pageParam.getCurrRowNum()).setMaxResults(pageParam.getPageSize()).list(); } }); } @Override public List findPageByHql(final String hql, final Object... conditions) { final PageParam pageParam = PageUtil.getPageParam(); // 計(jì)算總算 int total = 0; int index = -1; if (hql.matches("(?i)^//s*select//b.*")) { index = hql.toLowerCase().indexOf(" from "); } int endIndex = hql.toLowerCase().lastIndexOf(" order "); if (index == -1) { index = 0; } if (endIndex == -1) { endIndex = hql.length(); } List l = this.getHibernateTemplate().find("select count(*) " + hql.substring(index, endIndex).replaceAll("http://bfetch//b", ""), conditions); if (l != null && l.size() > 0) { total = StringUtil.toInt(l.get(0)); } pageParam.setTotalRow(total); // 分頁(yè)數(shù)據(jù) return this.getHibernateTemplate().executeFind(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException, SQLException { Query query = session.createQuery(pageParam.getOrderBy(hql)); if (conditions != null && conditions.length > 0) { for (int i = conditions.length - 1; i >= 0; i--) { query.setParameter(i, conditions[i]); } } return query.setFirstResult(pageParam.getCurrRowNum()).setMaxResults(pageParam.getPageSize()).list(); } }); } @Override public <X> List<X> findByHqlCache(final String hql, final Object... params) { return getHibernateTemplate().executeFind(new HibernateCallback() { @Override public Object doInHibernate(Session session) throws HibernateException, SQLException { Query hqlQuery = session.createQuery(hql).setCacheable(true); if (params != null) { for (int i = 0; i < params.length; i++) { hqlQuery.setParameter(i, params[i]); } } return hqlQuery.list(); } }); } @Override public void executeLocalSql(String sql) { getSession().createSQLQuery(sql).executeUpdate(); }}
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 石河子市| 八宿县| 桂阳县| 吴忠市| 绥棱县| 社旗县| 宁武县| 简阳市| 遂平县| 容城县| 北碚区| 茌平县| 邯郸县| 墨竹工卡县| 双柏县| 交城县| 平阴县| 年辖:市辖区| 三穗县| 新疆| 蓬莱市| 鄱阳县| 海盐县| 邯郸市| 如东县| 肥东县| 鸡泽县| 镇江市| 罗田县| 陆良县| 晋城| 桃园县| 都兰县| 潼南县| 出国| 兰考县| 郸城县| 鲁甸县| 大理市| 苍溪县| 垣曲县|