将 JDBC ResultSet 映射到对象

新手上路,请多包涵

我有一个具有 16 个属性的用户类,例如名字、姓氏、出生日期、用户名、密码等……这些都存储在 MySQL 数据库中,当我想检索用户时,我使用 ResultSet。我想将每一列映射回用户属性,但我这样做的方式似乎非常低效。例如我在做:

 //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);
}

即我检索所有列,然后通过将所有列值插入用户构造函数来创建用户对象。

有谁知道更快、更整洁的方法吗?

原文由 Quanqai 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 869
2 个回答

无需将 resultSet 值存储到 String 中并再次设置到 POJO 类中。而是在您检索时设置。

或者最好的方法是切换到 ORM 工具,如 hibernate 而不是 JDBC,它将 POJO 对象直接映射到数据库。

但截至目前使用这个:

 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);
}

原文由 Shoaib Chikate 发布,翻译遵循 CC BY-SA 3.0 许可协议

如果您不想使用任何 JPA 提供程序,例如 OpenJPA 或 Hibernate,您可以试试 Apache DbUtils。

http://commons.apache.org/proper/commons-dbutils/examples.html

然后您的代码将如下所示:

 QueryRunner run = new QueryRunner(dataSource);

// Use the BeanListHandler implementation to convert all
// ResultSet rows into a List of Person JavaBeans.
ResultSetHandler<List<Person>> h = new BeanListHandler<Person>(Person.class);

// Execute the SQL statement and return the results in a List of
// Person objects generated by the BeanListHandler.
List<Person> persons = run.query("SELECT * FROM Person", h);

原文由 Leo 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题