📄 basedaohibernate.java
字号:
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 + -