hibernate两表级联查询语句
2014-09-18 16:21
113 查看
一.两个表:
person
1 id
2 name(人名)
3 roomid
room
1 roomid
2 room(房间号)
说明:一个room有多个person,通过roomid取出name和room封装到list
二.两个类:
person类
private int id;
private String name;
private int roomid;
public Person()
{
}
public Person(int id,String name,int roomid)
{
this.id=id;
this.name=name;
this.roomid=roomid;
}
public int getId()
{
return this.id;
}
public void setId(int id)
{
this.id = id;
}
public String getName()
{
return this.name;
}
public void setName(String name)
{
this.name = name;
}
public int getRoomid()
{
return roomid;
}
public void setRoomid(int roomid)
{
this.roomid = roomid;
}
room类
private int roomid;
private String room;
public Room()
{
}
public Room(int roomid,String room)
{
this.roomid=roomid;
this.room = room;
}
public String getRoom()
{
return this.room;
}
public void setRoom(String room)
{
this.room = room;
}
public int getRoomid()
{
return roomid;
}
public void setRoomid(int roomid)
{
this.roomid = roomid;
}
三.Person.hbm.xml和Room.hbm.xml正常配置,此处就不写了.
四.Hibernate语句
String queryString="select p.name , r.room from Person p , Room r
where p.roomId = r.roomId";
return getHibernateTemplate().find(queryString);
此处返回一个list
五.获取list的值
设返回值是list
写一个JavaBean:
NrUtil
private String name;
private String room;
List<NrUtil> nrUtilList;
取list中的数据放入JavaBean中
Iterator it=list.iterator();
while(it.hasNext())
{
Object[] ob=(Object[])it.next();
String name=(String)ob[0];
String room=(String)ob[1];
NrUtil nr=new NrUtil(name,room);
nrUtilList.add(nr);
}
六.在JSP页面显示
利用<s:iterator>显示
这是我在网上找到的一篇,感觉不错,摘了下来。以下是我在项目中所写:
/* +++++++++++查找新闻,用根据新闻所属系部查找已经通过验证的新闻++++++++++++++ */ @SuppressWarnings("unchecked") public List<News> findNewsBydepartId(BigDecimal departId, int currentPage, int lineSize) { // TODO Auto-generated method stub System.out.println("************test************"+departId); String hql = "FROM News AS n WHERE n.department.departId = ? AND n.newsIsvalidate = 1 order by n.newsId desc"; Query q = this.getSession().createQuery(hql); q.setBigDecimal(0, departId); q.setFirstResult((currentPage - 1) * lineSize); q.setMaxResults(lineSize); List list = q.list(); return list; }
/* ++++++++++++++++++得到查询的系部新闻的总数++++++++++++++++++++++++++ */ @SuppressWarnings("unchecked") public int getBydepartIdCount(BigDecimal departId) { System.out.println("************testcount************"+departId); session = this.getSession(); Number num = null; String hql = "SELECT COUNT(*) from News AS n WHERE n.newsIsvalidate = 1 AND n.department.departId = ? "; Query q = this.session.createQuery(hql); q.setBigDecimal(0, departId); List all = q.list(); if (all.size() > 0) { num = (Number) all.get(0); System.out.println("查询的系部新闻的总数" + num); } return num.intValue(); }
person
1 id
2 name(人名)
3 roomid
room
1 roomid
2 room(房间号)
说明:一个room有多个person,通过roomid取出name和room封装到list
二.两个类:
person类
private int id;
private String name;
private int roomid;
public Person()
{
}
public Person(int id,String name,int roomid)
{
this.id=id;
this.name=name;
this.roomid=roomid;
}
public int getId()
{
return this.id;
}
public void setId(int id)
{
this.id = id;
}
public String getName()
{
return this.name;
}
public void setName(String name)
{
this.name = name;
}
public int getRoomid()
{
return roomid;
}
public void setRoomid(int roomid)
{
this.roomid = roomid;
}
room类
private int roomid;
private String room;
public Room()
{
}
public Room(int roomid,String room)
{
this.roomid=roomid;
this.room = room;
}
public String getRoom()
{
return this.room;
}
public void setRoom(String room)
{
this.room = room;
}
public int getRoomid()
{
return roomid;
}
public void setRoomid(int roomid)
{
this.roomid = roomid;
}
三.Person.hbm.xml和Room.hbm.xml正常配置,此处就不写了.
四.Hibernate语句
String queryString="select p.name , r.room from Person p , Room r
where p.roomId = r.roomId";
return getHibernateTemplate().find(queryString);
此处返回一个list
五.获取list的值
设返回值是list
写一个JavaBean:
NrUtil
private String name;
private String room;
List<NrUtil> nrUtilList;
取list中的数据放入JavaBean中
Iterator it=list.iterator();
while(it.hasNext())
{
Object[] ob=(Object[])it.next();
String name=(String)ob[0];
String room=(String)ob[1];
NrUtil nr=new NrUtil(name,room);
nrUtilList.add(nr);
}
六.在JSP页面显示
利用<s:iterator>显示
这是我在网上找到的一篇,感觉不错,摘了下来。以下是我在项目中所写:
/* +++++++++++查找新闻,用根据新闻所属系部查找已经通过验证的新闻++++++++++++++ */ @SuppressWarnings("unchecked") public List<News> findNewsBydepartId(BigDecimal departId, int currentPage, int lineSize) { // TODO Auto-generated method stub System.out.println("************test************"+departId); String hql = "FROM News AS n WHERE n.department.departId = ? AND n.newsIsvalidate = 1 order by n.newsId desc"; Query q = this.getSession().createQuery(hql); q.setBigDecimal(0, departId); q.setFirstResult((currentPage - 1) * lineSize); q.setMaxResults(lineSize); List list = q.list(); return list; }
/* ++++++++++++++++++得到查询的系部新闻的总数++++++++++++++++++++++++++ */ @SuppressWarnings("unchecked") public int getBydepartIdCount(BigDecimal departId) { System.out.println("************testcount************"+departId); session = this.getSession(); Number num = null; String hql = "SELECT COUNT(*) from News AS n WHERE n.newsIsvalidate = 1 AND n.department.departId = ? "; Query q = this.session.createQuery(hql); q.setBigDecimal(0, departId); List all = q.list(); if (all.size() > 0) { num = (Number) all.get(0); System.out.println("查询的系部新闻的总数" + num); } return num.intValue(); }
相关文章推荐
- Hibernate中级联查询语句还有Sql查询语句
- hibernate级联查询执行n+1次sqlt语句问题(内含解决办法,优化方式)
- hibernate查询语句--HQL
- Hibernate查询语句+HQL
- Hibernate原生SQL查询多表关联,SQL语句要注意的问题
- 解决Spring和Hibernate整合时HQL查询语句乱码问题
- Hibernate的HQL查询语句对比Sql语句学习
- hibernate里使用hql语句处理多表查询
- Hibernate 级联查询时,session关闭的问题
- 在Hibernate执行一对多表查询的HQL语句,怎样循环打印出结果
- hibernate 中HQL语句查询学习
- hibernate查询语句---HQL
- hibernate常用查询语句动态生成类(包括条件和无条件查询)
- hibernate查询语句--HQL(转自CSDN)
- Hibernate常用查询语句(hql)
- hibernate查询语句--HQL
- hibernate查询语句--HQL
- 关于Hibernate 查询语句中文乱码问题的解决
- Hibernate使用sql语句查询
- Hibernate的HQL查询语句对比Sql语句学习