双Hibernate单数据库
MultiMcfbaseDao.java
package com.mini.dao;
import java.util.List;
import java.util.Map;
import org.apache.commons.lang.StringUtils;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import com.bstek.dorado.data.provider.Page;
import com.bstek.dorado.hibernate.HibernateDao;
@SuppressWarnings("rawtypes")
public class MultiMcfbaseDao extends HibernateDao {
public void saveMulti(T entity, Session session) {
String entityName = this.getEntityName(entity);
//like12 modified,20170401,bug,保存不起,不提交
Transaction tran = session.beginTransaction();
try{
session.saveOrUpdate(entityName, entity);
//提交
tran.commit();
}catch (Exception e){
e.printStackTrace();
//回滚
tran.rollback();
}finally{
}
}
public void excuteUpdateMulti(final String hql, Object[] params,
Session session) {
Query query = session.createQuery(hql);
//like12 modified,20170401,bug,保存不起,不提交
Transaction tran = session.beginTransaction();
try{
if (params != null) {
int i = 0;
for (Object o : params) {
query.setParameter(i, o);
i++;
}
}
query.executeUpdate();
//提交
tran.commit();
}catch (Exception e){
e.printStackTrace();
//回滚
tran.rollback();
}finally{
}
}
@SuppressWarnings("unchecked")
public X findUniqueMulti(String hql, Session session,
Object... parameters) {
//查询
X X = (X) createQueryMulti(hql, session, parameters).uniqueResult();
//返回
return X;
}
@SuppressWarnings("unchecked")
public X findUniqueMulti(String hql, Map parameters
, Session session) {
//查询
X X = (X) createQueryMulti(hql, parameters, session).uniqueResult();
//返回
return X;
}
@SuppressWarnings("unchecked")
public List findMulti(String hql, Session session, Object... parameters) {
//查询
List X = createQueryMulti(hql, session, parameters).list();
//返回
return X;
}
@SuppressWarnings("unchecked")
public List findMulti(String hql, Map parameters
, Session session) {
//查询
List X = createQueryMulti(hql, parameters, session).list();
//返回
return X;
}
@SuppressWarnings("unchecked")
public void findMulti(Page page, String hql, Map parameters
, Session session) {
notNull(page, "page");
//总条数
long totalCount = countHqlResultMulti(hql, parameters, session);
//正式查询
Query q = this.createQueryMulti(hql, parameters, session);
page.setEntityCount((int) totalCount);
setPageParameterToQuery(q, page);
page.setEntities(q.list());
}
public Query createQueryMulti(String hql, Session session,
Object... parameters) {
Query q = session.createQuery(hql);
if (parameters != null) {
for (int i = 0; i < parameters.length; ++i) {
q.setParameter(i, parameters[i]);
}
}
return q;
}
public Query createQueryMulti(String queryString, Map parameters
, Session session) {
Query query = session.createQuery(queryString);
if (parameters != null) {
query.setProperties(parameters);
}
return query;
}
protected long countHqlResultMulti(String hql, Map parameters
, Session session) {
String countHql = generateCountHqlMulti(hql);
return ((Number) findUniqueMulti(countHql, parameters, session)).longValue();
}
private String generateCountHqlMulti(String hql) {
hql = "from " + StringUtils.substringAfter(hql, "from");
hql = StringUtils.substringBefore(hql, "order by");
String countHql = "select count(*) " + hql;
return countHql;
}
}



