【问题标题】:How to convert ResultSet object to one specific POJO class object?如何将 ResultSet 对象转换为一个特定的 POJO 类对象?
【发布时间】:2012-10-10 05:37:21
【问题描述】:
  1. 例如,我有一个结果集,其中包含有关员工详细信息的详细信息,并且我在数据库中有一个员工表,我正在从中选择所有详细信息

  2. 我有类似于 Employee Table 的 java POJO 类,实现将结果集转换为 Employee 类对象的最佳方法是什么

  3. 如果我有多个类(如 Employee)和多个表,最好的实现方法是如何编写可重用代码。

我现在使用以下符号。

public Employee{

    private int empId;

    public setEmpId(int empId){
        this.empId = empId;
    }

    public int getEmpId(){
        return this.empId;
    }
}

public class SetResultSetToEmployee{

    public Employee getEmployee(){
        Employee e = new Employee();
        e.setEmpId(resultSet.getInt("EmpId"));
        return e;
    }
}

【问题讨论】:

    标签: java resultset


    【解决方案1】:

    Mybatis,或者像 Hibernate 这样的 ORM 可能是你最好的解决方案。
    但是,如果你真的需要使用 jdbc 的 ResultSet,并且想将 ResultSet 转换为 java Beans,你可以查看:

    1. 来自 apache 的 BeanUtils 的 ResultSetDynaClass。
    2. 或者,像this一样自己编写一些代码。

    【讨论】:

    • 感谢分享您的想法,这对我的开发来说看起来不错,但我有一个问题:如果数据库中可能有更复杂的连接,并且如果数据库列名从一个结果集更改为另一个结果集,我该如何管理(我可以为 POJO 中的注释提供更多别名)
    • 尝试在select时添加别名:select orig_name as alias_name from XXXtable
    • 请您告诉我如何创建我们自己的注释提前谢谢
    • @Prakash 你不需要创建你自己的注解,你只需要使用 javax.persistence 包中的注解。简单来说,这个@Target({METHOD}) public @interface YourAnnotation { }创建了一个自定义注解YourAnnotation,可以注解方法。
    【解决方案2】:

    我有类似于 Employee Table 的 java POJO 类,什么是最好的 实现将结果集转换为Employee类对象的方法

    • 如果您知道JPA,那将是最好的选择。您不会 必须进行类型转换才能获取您的 POJO 对象.. JPA 适用于 ORM (对象关系映射)。它直接将您的 POJO 对象映射到 数据库表..当您可以直接从中获取对象时 数据库..

    • 如果你别无选择,只能使用JDBC,那么你就没有 TypeCasting以外的其他选择。

    如果我有多个类,最好的实现方法是什么 Employee 和多个表也是如何编写可重用的代码。

    • 如果是JDBC,不知道你是哪种Re-usability 寻找,但你可以实现一个DB 类,并拥有你所有的 Query Templates 那里.. 对于您想要执行的任何查询,您可以 使用那个类..那比较好用,而不是 有离散的查询,分散在你的应用程序中..

    • 再次,如果你可以使用 JPA,有一个 Entities.. 的概念。如果你 想要与数据库一起使用多个获取、更新或插入,这将更容易 你..你可以得到适当的对象并将其转储到一个实例中 您的Entity,或者将您的对象转储到您的数据库中,而不用担心任何类型的Queries。

    对于 JPA,您可以从以下任何链接开始:-

    【讨论】:

    • 谢谢,但我现在正在使用 JDBC。您提到的查询模板是什么,请您用一个例子解释一下
    • @Prakash.. 您可以在一个类中拥有所有queries.. 所有查询只需要Query String.. 因此,您可以调用适当的查询并传递查询字符串.. 那查询字符串将被替换执行以提供您想要的结果..
    【解决方案3】:

    如果您真的想编写可重用的代码,请使用 http://www.hibernate.org/ 等 ORM 工具。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-17
      • 2013-09-18
      相关资源
      最近更新 更多