我正在开发一个相册Web应用程序,其中我使用两个表USER_INFORMATION和USER_PHOTO。 USER_INFORMATION仅包含一条记录的用户记录,USER_PHOTO包含多个单个用户的照片。我想获取用户信息的数量及其userimage路径,并将其存储到Java Pojo变量(如列表)中,以便我可以使用struts 2中的display标签显示它。
表格就是这样。
USER_PHOTO USER_INFORMATION
======================= =================================
| IMAGEPATH | USER_ID | | USER_NAME | AGE | ADDRESS |ID |
======================= =================================
|xyz | 1 | | abs | 34 | sdas | 1 |
|sdas | 1 | | asddd | 22 | asda | 2 |
|qwewq | 2 | | sadl | 121 | asd | 3 |
| asaa | 1 | ==================================
| 121 | 3 |
=======================
我通过使用HashSet和显示标签来设法正确获取用户信息,代码就像这样......
public ArrayList loadData() throws ClassNotFoundException, SQLException {
ArrayList<UserData> userList = new ArrayList<UserData>();
try {
String name;
String fatherName;
int Id;
int age;
String address;
String query = "SELECT NAME,FATHERNAME,AGE,ADDRESS,ID FROM USER_INFORMATION ,USER_PHOTO WHERE ID=USER_ID";
ps = con.prepareStatement(query);
ResultSet rs = ps.executeQuery();
while (rs.next()) {
name = rs.getString(1);
fatherName = rs.getString(2);
age = rs.getInt(3);
address = rs.getString(4);
//Id = rs.getInt(5);
UserData list = new UserData();
list.setName(name);
list.setFatherName(fatherName);
list.setAge(age);
list.setAddress(address);
//list.setPhot(Id);
userList.add(list);
}
ps.close();
con.close();
} catch (Exception e) {
e.printStackTrace();
}
ArrayList al = new ArrayList();
HashSet hs = new HashSet();
hs.addAll(userList);
al.clear();
al.addAll(hs);
//return (userList);
return al;
我的显示标签在jsp中就像这样...
<display:table id="data" name="sessionScope.UserForm.userList" requestURI="/userAction.do" pagesize="15" >
<display:column property="name" title="NAME" sortable="true" />
<display:column property="fatherName" title="User Name" sortable="true" />
<display:column property="age" title="AGE" sortable="true" />
<display:column property="address" title="ADDRESS" sortable="true" />
</display:table>
你可以看到我只显示用户信息,而不是他上传的照片我也想显示他上传的文件名。我创建了另一张表来存储他的照片信息。如果我在我的sql查询中包含 Imagepath 属性,那么它们将是重复的行意味着如果用户上传了5张照片而不是显示标签将显示五条记录,其中相同的信息具有不同的ImagePath。
所以任何人都可以告诉我锄头使用多个ImagePath只显示一条用户信息记录,这样就不会重复显示用户信息。
提前致谢