【问题标题】:Database or CSV to java object数据库或 CSV 到 java 对象
【发布时间】:2013-07-10 17:02:30
【问题描述】:

现在我有一个 CSV,其中有几列。最终,我将拥有一个 SQL 关系数据库结构。我想知道是否有任何库可以轻松地将这些数据提取到 java 对象列表中。

例子:

标题 |位置 |日期
事件A |加利福尼亚州洛杉矶 | 05-29-2014
事件B |纽约州纽约 | 08-23-2013

这是 csv 中数据的结构。我会有一个名为 Event 的 java 对象:

Event(String title, String location, String Date)

我知道openCSV。那我需要用于csv吗?如果是这样,SQL 关系数据库的不同解决方案是什么?

另外,读取csv是否只能在main方法中完成?

【问题讨论】:

    标签: java database csv pojo opencsv


    【解决方案1】:

    当您转换为 SQL 数据库时,您可以使用 Apache 的 dbutils 作为低级解决方案,或使用 Hibernate 作为高级解决方案。

    dbutils 您可以实现 ResultSetHandler 将结果集转换为对象,或者如果它是 POJO,框架可以为您转换它。 apache 网站上有示例。 http://commons.apache.org/proper/commons-dbutils/

    休眠 有很多关于使用 Hibernate 的教程。 http://www.hibernate.org/

    【讨论】:

      【解决方案2】:

      试试JSefa,它允许您注释可用于序列化和反序列化过程的Java 类。

      来自tutorial

      CSV 的注解类似于 XML 的注解。

      @CsvDataType()
      public class Person {
          @CsvField(pos = 1)
          String name;
      
          @CsvField(pos = 2, format = "dd.MM.yyyy")
          Date   birthDate;
      }
      

      序列化

      Serializer serializer = CsvIOFactory.createFactory(Person.class).createSerializer();
      

      这次我们使用了超级接口Serializer,这样我们就可以从下面代码中选择的格式类型(XML、CSV、FLR)中抽象出来。

      下一个应该不足为奇:

      serializer.open(writer);
      // call serializer.write for every object to serialize
      serializer.close(true);
      

      结果

      欧文·施密特;23.05.1964

      托马斯·斯图姆;12.03.1979

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-10-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-27
        • 2012-06-07
        • 1970-01-01
        相关资源
        最近更新 更多