Search code examples
javamysqlobjectjdbcresultset

Mapping a JDBC ResultSet to an object


I have a user class that has 16 attributes, things such as firstname, lastname, dob, username, password etc... These are all stored in a MySQL database and when I want to retrieve users I use a ResultSet. I want to map each of the columns back to the user attributes but the way I am doing it seems terribly inefficient. For example I am doing:

//ResultSet rs;
while(rs.next()) {
   String uid = rs.getString("UserId");
   String fname = rs.getString("FirstName");
   ...
   ...
   ...
   User u = new User(uid,fname,...);
   //ArrayList<User> users 
   users.add(u);
} 

i.e I retrieve all the columns and then create user objects by inserting all the column values into the User constructor.

Does anyone know of a faster, neater, way of doing this?


Solution

  • No need of storing resultSet values into String and again setting into POJO class. Instead set at the time you are retrieving.

    Or best way switch to ORM tools like hibernate instead of JDBC which maps your POJO object direct to database.

    But as of now use this:

    List<User> users=new ArrayList<User>();
    
    while(rs.next()) {
       User user = new User();      
       user.setUserId(rs.getString("UserId"));
       user.setFName(rs.getString("FirstName"));
      ...
      ...
      ...
    
    
      users.add(user);
    }