【问题标题】:Auto generate Java Classes From a csv file从 csv 文件自动生成 Java 类
【发布时间】:2012-05-14 17:15:31
【问题描述】:

我正在尝试从 csv 文件中自动生成 Java POJO 类,其中第一行包含标题,其他行包含数据。我在网上找到了许多示例和工具,展示了如何解析 csv 文件并将数据放入 Java 对象中,但在所有这些示例和工具中,Java POJO 类已经手动创建,我正在寻找一种自动生成它们的工具。否则我需要一个类似于 Hibernate 逆向工程工具的工具,但我有 csv 文件而不是数据库。

例如这里是我的输入 csv 文件:

username, password,   date,        zip,  town

Klaus,    qwexyKiks,  17/1/2007,1111, New York

Oufu1,     bobilops,    10/10/2007,4555, New York

这是我需要自动生成的:

package test;

import java.util.Date;

public class UserBean {
    String username;
    String password;
    Date date;
    int zip;
    String town;


    public Date getDate() {
        return date;
    }
    public String getPassword() {
        return password;
    }
    public String getTown() {
        return town;
    }
    public String getUsername() {
        return username;
    }
    public int getZip() {
        return zip;
    }
    public void setDate(final Date date) {
        this.date = date;
    }
    public void setPassword(final String password) {
        this.password = password;
    }

    public void setTown(final String town) {
        this.town = town;
    }
    public void setUsername(final String username) {
        this.username = username;
    }
    public void setZip(final int zip) {
        this.zip = zip;
    }
}

【问题讨论】:

  • 你做了什么来实现这个目标?
  • 我想他是在寻找已经写好的工具。

标签: java csv pojo


【解决方案1】:

我认为你想做的事情会很慢而且不能容错。

关系数据库管理系统中的表与csv文件的主要区别在于csv文件没有数据类型信息。因此,您希望拥有的软件应在列上应用类型推断,这可能会非常缓慢且容易出错。如果您要解析可能包含错误的大文件,您将没有验证功能,执行时间可能会成为整个系统的瓶颈。

【讨论】:

  • 我需要将我的 csv 文件转换为 POJO 类,因为我的应用程序有许多不同的数据源(数据库、csv、xml ...),所以我的业务层必须独立于数据源的类型并且只使用 POJO 类,这就是为什么我使用数据库中的 Hibernate 工具生成 POJO 类的原因,现在我正在寻找一种工具来完成与使用 csv 文件的 Hibernate 相同的工作。我同意你关于数据类型问题的看法,但这可以通过在访问层只创建 String 对象并在业务层进行一些类型转换来解决。
  • 您的意思是要实现Data Transfer Object 模式(也称为值对象)?这可能是一个想法,但您必须在业务层内执行输入验证。你试过CSV JDBC Drivers吗?
  • 感谢您提到数据传输对象模式,实际上我几乎实现了相同的东西,如果我将它包含到我的项目中将是一个好主意。对于 CSV JDBC 驱动程序,我不知道是否可以使用 Hibernate 或其他工具从表示 csv 文件的数据库创建 POJO 类,我认为这会使事情变得更加复杂,所以我正在寻找一个直接转换器工具(不使用数据库) 如果没有现成的,我将不得不开发自己的转换器。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-25
  • 2015-11-25
  • 2010-10-15
  • 2014-09-08
  • 2016-11-13
  • 1970-01-01
相关资源
最近更新 更多