java - 使用从其他类的方法中检索到的信息

标签 java postgresql arraylist data-retrieval

我已成功从 PostgreSQL 数据库中检索到以下类中的数据。 PostgreSQL 中的表数据行添加在ArrayList<> userlist中. 我分享了更正后的代码。

class UserList extends ArrayList<User> {
// as in comments said it seems really bad idea is to extend ArrayList. So, avoid it!
    }

用户类是:

public class User {

    private String firstName;
    private String lastName;

       public User(String firstName, String lastName) {
            this.firstName = firstName;
            this.lastName = lastName;
        }

        public void calculateSimilarityUser(User u){
            .... //some codes                
        }

        public String getFirstName() {
            return firstName;
        }

        public void setFirstName(String firstName) {
            this.firstName = firstName;
        }

        public String getLastName() {
            return lastName;
        }

        public void setLastName(String lastName) {
            this.lastName = lastName;
        } 
    }

UserDAO 类是:

public class UserDAO {

    static Connection currentCon = null;
    static ResultSet rs = null;

    private ArrayList<User> userlist = new ArrayList<>();

    public ArrayList<User> LoadFromDatabase(){

        PreparedStatement userinfoStmt = null;

        String loadUsersInfo = "SELECT * FROM userinfo";

            try {
                currentCon = ConnectionManager.getConnection();
                userinfoStmt = currentCon.prepareStatement(loadUsersInfo);
                rs = userinfoStmt.executeQuery();


                while (rs.next()) {
                    User us = new User(rs.getString("firstname"), rs.getString("lastname"), rs.getInt("index"));


                userlist.add(us);
            }

            userinfoStmt.close();
            currentCon.close();

        } catch (Exception e) {
        }

        return userlist;   
    }

index.jsp

<%

                UserDAO inf= new UserDAO();
                ArrayList<User> userList = inf.LoadFromDatabase();
                Recommender rc = new Recommender(userList);
   %>

最佳答案

扩展 ArrayList 在您的情况下没有任何意义。基本上您可以将您的类命名为 UserDAO。并且无需创建类级变量,您可以创建局部变量。

public class UserDAO { // no need to extend and changed name to UserDAO

    public List<User> retainTopUsersItems(int maxNumOfReturnedResources, List<User> userList) {
        List<User> retainList = new ArrayList<User>();
        for (int i = 0; i < maxNumOfReturnedResources; i++) {
            retainList.add(userList.get(i));
        }
        return retainList;
    }

    public List<User> loadFromDatabase() {
        Connection userinfoCon = null;
        ResultSet userinfoRS = null;
        List<User> userlist = new ArrayList<>();

在您的 jsp 中使用从方法中检索的列表。

<%
    // UserList users = new UserList();
    UserDAO inf= new UserDAO();
    List<User> userList = inf.loadFromDatabase(); // See the changes
    Recommender rc = new Recommender(userList); // Change constructor definition in your Recommender
%>

注意:不要使用您的异常,抛出它或记录它?

关于java - 使用从其他类的方法中检索到的信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31870583/

相关文章:

java - 如何使用java实现ANS X9.24 dukpt

java - 我将如何循环回到开头?

java - 无法使用 javamail api 通过 Gmail 发送邮件

sql - Count distinct where 属性是任一键

mysql - 使用 vb.net 查找数组中与给定时间最接近的时间

java - 用 ArrayList 或 TreeSet 优化代码?

java - 指定的子项已经有父项。我缺少什么

sql - 如何在 Postgres 中基于 INSERT RETURNING id 进行 SQL 更新?

sql - 某部门某天某天空闲床位数

java - 如何在java中操作数组