hibernate基础工具findBySQL学习
时间:2021-07-01 10:21:17
帮助过:128人阅读
List<Map<String,Object>> findBySQL(String sql,Map<String,Object> param,
int start,
int max) {
log.debug("finding List by hql"
);
try {
//最后返回map map的key可为别名和数据库字段
SQLQuery query=
sessionFactory.getCurrentSession().createSQLQuery(sql);
query.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
//遍历param插入参数
if(param!=
null) {
for (Map.Entry<String, Object>
entry : param.entrySet()) {
Object obj =
entry.getValue();
//这里考虑传入的参数是什么类型,不同类型使用的方法不同 hibernate传入list的方法
if(obj
instanceof Collection<?>
){
query.setParameterList(entry.getKey(), (Collection<?>
)obj);
}else if(obj
instanceof Object[]){
query.setParameterList(entry.getKey(), (Object[])obj);
}else{
query.setParameter(entry.getKey(), obj);
}
}
}
query.setFirstResult(start);//起始页
if(max!=0
){
query.setMaxResults(max);//每页几条
}
List<Map<String,Object>> results =
query.list();
log.debug("find list successful, result size: " +
results.size());
return results;
} catch (RuntimeException re) {
log.error("find list failed"
, re);
throw re;
}
}
注意 数组传入时是int 是没有属于
Object[] 或者
Collection<?>
数组传入需要为封装类
hibernate基础工具findBySQL学习
标签:lis deb find eof 封装 cto nts ring obj