Hibernate根据参数不同获得不同返回类型对象

/** 
* 将map装换为javabean对象 
* @param map 
* @param bean 
* @return 
*/  
public static <T> T mapToBean(Map<String, Object> map,T bean) {  
   BeanMap beanMap = BeanMap.create(bean);  
   beanMap.putAll(map);  
   return bean;  


/** 
* 将List<Map<String,Object>>转换为List<T> 
* @param maps 
* @param clazz 
* @return 
* @throws InstantiationException 
* @throws IllegalAccessException 
*/  
public static <T> List<T> mapsToObjects(List<Map<String, Object>> maps,Class<T> clazz) throws InstantiationException, IllegalAccessException {  
   List<T> list = Lists.newArrayList();  
   if (maps != null && maps.size() > 0) {  
       Map<String, Object> map = null;  
       T bean = null;  
       for (int i = 0; i <maps.size(); i++) {  
           map = maps.get(i);  
           bean = clazz.newInstance();  
           mapToBean(map, bean);  
           list.add(bean);  
       }  
   }  
   return list;  


/***

* 联合多表查询List,没有对应的实体类,获得List<Map<String,Object>>类型
* @param sql  想要获得List<T>,需要借助以上两个方法
* @param params
* @return List<Object>
*/
@SuppressWarnings("rawtypes")
public List getListNoEntity(String sql, Object[] params) {
Session session = null;
List list = null;
try {
session = getSession();
session.beginTransaction();
Query query = session.createSQLQuery(SqlStringUtil.PreventSQLInjection(sql)).setResultTransformer(
Transformers.ALIAS_TO_ENTITY_MAP);
if (params != null) {
params = SqlStringUtil.PreventSQLInjection(params);
for (int i = 0; i < params.length; i++) {
query = query.setParameter(i, params[i]);
}
}
list = query.list();
} catch (HibernateException e) {
e.printStackTrace();
}finally{
if (session != null) {
if (session.isOpen()) {
session.close();
}
}
}
return list;

}



/**
* 查询有对应实体的对象集合
* @param sql 查询语句
* @param params 查询参数
* @param c 实体类的类类型
* @return
*/
public List<?> getListWithEntity(String sql, Object[] params, Class<?> c) {
Session session = null;
List<?> list = null;
try {
session = getSession();
session.beginTransaction();
Query query = session.createSQLQuery(SqlStringUtil.PreventSQLInjection(sql)).addEntity(c);
if (params != null) {
params = SqlStringUtil.PreventSQLInjection(params);
for (int i = 0; i < params.length; i++) {
query = query.setParameter(i, params[i]);
}
}
list = query.list();
} catch (HibernateException e) {
e.printStackTrace();
} finally {
if (session != null) {
if (session.isOpen()) {
session.close();
}
}
}
return list;
}

/***
* 获得唯一实体对象
* @param sql 查询语句
* @param params 查询参数
* @param c 实例类的类类型
* @return
*/
public Object getEntity(String sql, Object[] params, Class<?> c) {
Session session = null;
Object obj = null;
try {
session = getSession();
session.beginTransaction();
Query query = session.createSQLQuery(SqlStringUtil.PreventSQLInjection(sql)).addEntity(c);
if (params != null) {
params = SqlStringUtil.PreventSQLInjection(params);
for (int i = 0; i < params.length; i++) {
query = query.setParameter(i, params[i]);
}
}
obj = query.uniqueResult();
} catch (HibernateException e) {
//TODO 抛出异常信息给前面
e.printStackTrace();
throw new HibernateException("--查询唯一结果出错--");
} finally {
if (session != null) {
if (session.isOpen()) {
session.close();
}
}
}
return obj;
}

猜你喜欢

转载自blog.csdn.net/b13001216978/article/details/80855593
今日推荐