急!Hibernate高手请进!跪求解决方案,在线等。。。。。。

computerbird 2006-05-23 04:34:05
Spring+Hibernate在Dao中Hibernate直接调用SQL语句的问题:
我做一个人员的列表查询,因为对SQL比较熟悉,所以不想用指定实体的方式,这样列表上要显示什么我就查什么,我觉得Hibernate的分页不错,所以这里需要用到Hibernate的分页

现在代码如下:
//SQL语句
public static String findPersonList(String LoginName, String RealName,
String DepName) {
String sql = " select p.Id,p.LoginName,p.RealName,p.DepId,dep.DepName,p.Description "+
" from BI_Person as p,BI_Department as dep " +
" where p.DeleteFlag = 0 and p.DepId = dep.Id ";
if(!(LoginName.equals(""))){
sql += " and p.LoginName like '" + '%' + LoginName + '%' + "'";
}
if(!(RealName.equals(""))){
sql += " and p.RealName like '" + '%' + RealName + '%' + "'";
}
if(!(DepName.equals(""))){
sql += " and dep.DepName like '" + '%' + DepName + '%' + "'";
}
sql += " order by p.LoginName ";
return sql;
}


public List findPersonList(String LoginName,String RealName,String DepName,int startRow,int pageSize) {
String sql = BiSql.findPersonList(LoginName,RealName,DepName);
//这里如果指定实例的话应该是这样的
//SQLQuery query = getSession().createSQLQuery(sql)
// .addEntity("BiPerson");
//现在我想直接在查询中就把我需要的所有东西都查出来,不能用实体来指定,所以把.addEntity("BiPerson")去掉了
SQLQuery query = getSession().createSQLQuery(sql);

query.setFirstResult(startRow);
query.setMaxResults(pageSize);

List results = query.list();
return results;
}

上面代码中返回的是一个List

下面代码是取出数据:
Iterator it = list.iterator();
Object s[];
while (it.hasNext())
{
s = (Object[]) it.next();
System.out.println(s[0]);
System.out.println(s[1]);
System.out.println(s[2]);
System.out.println(s[3]);
}
这样是没有问题的,可以取出数据
但是这样通过Object[]的索引标志来取数据很不直观,是不是可以在findPersonList方法中把查出的数据放到一个HashMap中,然后可以根据查询的字段来取数据。
类似于这样:
Iterator it = list.iterator();
HashMap map = new HashMap();
while (it.hasNext())
{
map = (HashMap) it.next();
System.out.println((String)map.get("Id"));
System.out.println((String)map.get("LoginName"));
System.out.println((String)map.get("RealName"));
System.out.println((String)map.get("DepName"));
}
当然,不一定用HashMap用其它的也行,我想实现的就是类似于上面这段能够通过指定的名称取出数据,小弟跪求大虾们帮忙!
...全文
123 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

67,515

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧