一.两个表:
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两表级联查询语句
原创
©著作权归作者所有:来自51CTO博客作者1058106015的原创作品,请联系作者获取转载授权,否则将追究法律责任
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
SQL Server 执行计划3--关联查询
SQL Server执行计划,多表关联查询
Nested Loops Merge Join Hash Match