⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 basedaohibernate.java

📁 使用WEBWORK,SPRING,HIBERNATE编写的简单的添加
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
			log.error("数据库执行失败: " + e);
			e.printStackTrace();
			throw new DAOException(e);
		}catch (Throwable e) {
			log.error("系统错误: " + e);
			e.printStackTrace();
			throw new DAOException(e);
		}		
	}
	
	public void removeEntity(ID id){
		String hql="";
		String[] tmpArray=getEntityName().split("[.]");
		String modelName=tmpArray[tmpArray.length-1];
		hql="delete from "+modelName+"  where id=?";		
		try{
			batchUpdateOrDelete(hql,new Object[]{id});
		} catch (DataAccessException e) {
			log.error("数据库执行失败: " + e);
			e.printStackTrace();
			throw new DAOException(e);
		}catch (Throwable e) {
			log.error("系统错误: " + e);
			e.printStackTrace();
			throw new DAOException(e);
		}			
	}
	public void removeEntity(ID[] array){
		String hql="";
		String[] tmpArray=getEntityName().split("[.]");
		String modelName=tmpArray[tmpArray.length-1];
		hql="delete from "+modelName+"  where id=?";
		try {
			for(int i=0;i<array.length;i++){
			  if(i%Config.batchSize==0 &&i>0){
				  getHibernateTemplate().flush(); 
				  getHibernateTemplate().clear();
			  }
				  batchUpdateOrDelete(hql,new Object[]{array[i]});
			}
		} catch (DataAccessException e) {
			e.printStackTrace();
			log.error("数据库执行失败: " + e);
			throw new DAOException(e);
		}catch (Throwable e) {
			e.printStackTrace();
			log.error("系统错误: " + e);
			throw new DAOException(e);
		}
	}	
	/*******************************
	 * 批量数据的更新或者删除
	 * @param hql
	 */
	public void batchUpdateOrDelete(final String hql,final Object[] values){
		getHibernateTemplate().execute(
				new HibernateCallback() {
					public Object doInHibernate(Session session)
							throws HibernateException {
						try {
							Query queryObject=session.createQuery(hql);
							if (values != null) {
								for (int i = 0; i < values.length; i++) {
									queryObject.setParameter(i, values[i]);
								}
							}
							queryObject.executeUpdate();
						} catch (HibernateException e) {
							e.printStackTrace();
							log.error("批量删除数据错误:" + e);
							throw new DAOException("批量删除数据错误:"
											+ e.getMessage());
						} catch (DataAccessException e) {
							e.printStackTrace();
							log.error("批量删除数据错误:" + e);
							throw new DAOException(e);
						} catch (Throwable e) {
							e.printStackTrace();
							log.error("系统错误:" + e);
							throw new DAOException(e);
						}
						return null;
					}
				},true);	
	}
  	
	/*******************************
	 * 执行数据库的sql语句,一般用于批量数据的操作
	 * @param sql
	 */
	public void excuteNativeSql(final String sql){		
		getHibernateTemplate().execute(new HibernateCallback() { 
            public Object doInHibernate(Session session)
					throws HibernateException {
				boolean res = false;
				PreparedStatement ps = null;
				try {
					ps = session.connection().prepareStatement(sql);
					ps.executeUpdate();
					res = true;
				} catch (Exception e) {
					e.printStackTrace();
					log.error("数据库执行错误:" + e);
					throw new DAOException(e);					
				} finally {
					// session.disconnect();
					// try{ps.close();}catch(Exception ex){}
					// try{c.close();}catch(Exception ex){}
				}
				return res;
			}
		},true);
	}
	public List findByNamedQuery(final String namedQuery) {    
        return getHibernateTemplate().findByNamedQuery(namedQuery);    
    }    
   
    public List findByNamedQuery(final String query, final Object parameter) {    
        return getHibernateTemplate().findByNamedQuery(query, parameter);    
    }    
   
    public List findByNamedQuery(final String query, final Object[] parameters) {    
        return getHibernateTemplate().findByNamedQuery(query, parameters);    
    }    
   
    public List find(final String query) {    
        return getHibernateTemplate().find(query);    
    }    
   
    public List find(final String query, final Object parameter) {    
        return getHibernateTemplate().find(query, parameter);    
    }    
    public PaginationSupport findPageByCriteria(DetachedCriteria detachedCriteria,PaginationSupport paginationSupport) {   
    	paginationSupport.setTotalCount(getCountByCriteria(detachedCriteria));
    	PaginationSupport ps=findPageByCriteria(detachedCriteria, paginationSupport.getPageSize(), paginationSupport.getStartIndex());
    	paginationSupport.setItems(ps.getItems()); 
    	//paginationSupport.setTotalCount(ps.getTotalCount());
    	return paginationSupport;
    }   
    public PaginationSupport findPageByCriteria(final DetachedCriteria detachedCriteria) {    
        return findPageByCriteria(detachedCriteria, PaginationSupport.PAGESIZE, 0);    
    }    
   
    public PaginationSupport findPageByCriteria(final DetachedCriteria detachedCriteria, final int startIndex) {    
        return findPageByCriteria(detachedCriteria, PaginationSupport.PAGESIZE, startIndex);    
    }    
   
    public PaginationSupport findPageByCriteria(final DetachedCriteria detachedCriteria, final int pageSize,    
            final int startIndex) {    
        return (PaginationSupport) getHibernateTemplate().execute(new HibernateCallback() {    
            public Object doInHibernate(Session session) throws HibernateException {    
                Criteria criteria = detachedCriteria.getExecutableCriteria(session);    
                //int totalCount = ((Integer) criteria.setProjection(Projections.rowCount()).uniqueResult()).intValue();    
                criteria.setProjection(null);    
                List items = criteria.setFirstResult(startIndex).setMaxResults(pageSize).list();    
                PaginationSupport ps = new PaginationSupport(items);    
                return ps;
            	/*Criteria criteria = detachedCriteria.getExecutableCriteria(session);
                CriteriaImpl impl = (CriteriaImpl) criteria;
                List orderEntrys = new ArrayList();
                try{
                    Field field = CriteriaImpl.class.getDeclaredField("orderEntries");
                    //Get orders
                    orderEntrys = (List) field.get(impl);
                    //Remove orders
                    field.set(criteria,new ArrayList());
                }catch(Exception ex){
                    ex.printStackTrace();
                    //TODO xxxx
                }
                int totalCount = ((Integer) criteria.setProjection(Projections.rowCount())
                        .uniqueResult()).intValue();
                criteria.setProjection(null);
                
                try{
                    Field field = CriteriaImpl.class.getDeclaredField("orderEntries");
                    //Add orders return
                    for(int i=0; i<orderEntrys.size(); i++){
                        List innerOrderEntries = (List) field.get(criteria);
                        innerOrderEntries.add(orderEntrys.get(i));
                    }
                }catch(Exception ex){
                    ex.printStackTrace();
                    //TODO cccc
                }
                List items = criteria.setFirstResult(startIndex).setMaxResults(pageSize).list();
                PaginationSupport ps = new PaginationSupport(items, totalCount, pageSize,
                        startIndex);
                return ps;*/
            	
            }    
        }, true);    
    }    
   
    public List findAllByCriteria(final DetachedCriteria detachedCriteria) {    
        return (List) getHibernateTemplate().execute(new HibernateCallback() {    
            public Object doInHibernate(Session session) throws HibernateException {    
                Criteria criteria = detachedCriteria.getExecutableCriteria(session);    
                return criteria.list();    
            }    
        }, true);    
    }    
   
    public int getCountByCriteria(final DetachedCriteria detachedCriteria) {    
        Integer count = (Integer) getHibernateTemplate().execute(new HibernateCallback() {    
            public Object doInHibernate(Session session) throws HibernateException {    
                Criteria criteria = detachedCriteria.getExecutableCriteria(session);    
                return criteria.setProjection(Projections.rowCount()).uniqueResult();    
            }    
        }, true);    
        return count.intValue();    
    }   
    public int countBySQL(final String sql,final String alias){
        Integer count = (Integer) getHibernateTemplate().execute(new HibernateCallback() {
            public Object doInHibernate(Session session) throws HibernateException {
                Query query = session.createSQLQuery(sql).addScalar(alias, Hibernate.INTEGER);
                return query.uniqueResult();
            }
        }, true);
        return count == null ? 0 : count.intValue();
    }
    
	/*********************
	 * 判断对象在数据库中是否存在
	 * @param 
	 */
	public boolean isExists(T t,List<String> names){
		boolean res=false;
		Criteria criteria = getSession().createCriteria(getEntityClass()).setProjection(Projections.rowCount());
		try {
			for(int i=0;i<names.size();i++){
				//criteria.add(Restrictions.eq(names.get(i), BeanUtils.getProperty(t, names.get(i))));
				criteria.add(Restrictions.eq(names.get(i),BeanUtils.invokePrivateMethod(t,BeanUtils.getGetterName(getEntityClass(),names.get(i)))));
			}
		} catch (Exception e) {
			log.error(e.getMessage());
        }
		res=((Integer) criteria.uniqueResult()).intValue() > 0;
		return res;
	}  
	
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Long t=new Long("200802020948390001");
		System.out.println("ddd"+t);

	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -