二张表分别为用户表(users)和贴子表(notes),其中users中的userid是notes表的外键,users跟notes是一对多,多对一关系,由myEclpise自动生成映射文件
Users.hbm.xml
Notes.hbm.xml
注意:如果 多表查询 ,在写HQL语句时取notes的userid字段不能写notes.userid(这个问题下午我查了好久,才找到原因的)
HQL语句:From Notes notes,Users users WHERE notes.users =users.userid AND notes.issubject=1
又一注意点:该查询结果为存放对象数组的list集,可以用以下代码测试
在jsp页面显示结果的时候我觉得用EL表达式会简单的多,如:
Users.hbm.xml
- ......
- <set name="noteses" inverse="true">
- <key>
- <column name="userid" not-null="true" />
- </key>
- <one-to-many class="com.note.model.Notes" />
- </set>
- .....
Notes.hbm.xml
- ......
- <many-to-one name="users" class="com.note.model.Users" fetch="select">
- <column name="userid" not-null="true" />
- </many-to-one>
- ......
注意:如果 多表查询 ,在写HQL语句时取notes的userid字段不能写notes.userid(这个问题下午我查了好久,才找到原因的)
HQL语句:From Notes notes,Users users WHERE notes.users =users.userid AND notes.issubject=1
又一注意点:该查询结果为存放对象数组的list集,可以用以下代码测试
- page=ins.listSubjects(page);//page是我的分页类,并存放了查询后的返回结果
- List list=page.getResult();
- System.out.println(page.getPageToolBar());
- for(int i=0;i<list.size();i++){
- Object[] obj=(Object[])list.get(i);
- for(int j=0;j<obj.length;j++){
- if(obj[j] instanceof Notes){
- Notes note=(Notes)obj[j];
- System.out.print(note.getTitle());
- }else if(obj[j] instanceof Users){
- Users user=(Users)obj[j];
- System.out.print(user.getUsername());
- }
- }
- System.out.println();
- }
在jsp页面显示结果的时候我觉得用EL表达式会简单的多,如:
- <logic:present name="subjects">
- <table width="100%" border="1" rules="rows" frame="below" cellpadding="5" cellspacing="0" bordercolorlight="#6C7BA6" bordercolordark="#ffffff" bgcolor="#DEEFFF" class="DoubleColorTable">
- <logic:present name="subjects" property="result">
- <logic:iterate id="objs" name="subjects" indexId="number" property="result">
- <tr>
- <td>
- <html:link page="/listFollow.do?method=listFollow&subjectId=${objs[0].noteid}" styleId="link001">
- 主题:${objs[0].title}
- </html:link>
- </td>
- <td>
- 作者:${objs[1].username}
- </td>
- <td>
- 发贴时间:${objs[0].addtime}
- </td>
- </tr>
- </logic:iterate>
- </logic:present>
- </table>
- <bean:write name="subjects" property="pageToolBar" filter="false" />
- </logic:present>