从数据库中检索多行并使用struts2进行显示

时间:2012-03-09 08:07:27

标签: database struts2

我正在开发一个相册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只显示一条用户信息记录,这样就不会重复显示用户信息。

提前致谢

0 个答案:

没有答案