0

我写了一个小代码,其功能如下:

  1. 读取输入文件
  2. 读取其中的第一行并检查它是否AAA在某个位置具有值
  3. 如果满足条件,则调用该方法insertAAAmethod并将数据加载到 oracle 表中
  4. 如果记录BBB调用insertBBBrmethod具有不同的插入查询,请阅读下一行

问题是我在输入文件中有 15 条不同的记录,所以我有 15 种不同的方法,例如insertAAAmethod每种方法都有不同的插入查询:

public static void insertAAARecord() throws Exception {

    String sqlQuery = "insert into my_table(ColumnA,ColumnB,ColumnC,ColumnD,ColumnE,ColumnF,ColumnG)"
            + "values (?,?,?,?,?,?,?)";

    try {

        pstmt = conn.prepareStatement(sqlQuery);

        pstmt.setString(1, "AAA");
        pstmt.setDate(2,
                StringtoDate("AAA", CurrentLine.substring(150, 158)));
        pstmt.setDate(3,
                StringtoDate("AAA", CurrentLine.substring(158, 166)));
        pstmt.setString(4, CurrentLine.substring(24, 34));
        pstmt.setString(5, CurrentLine.substring(37, 45));
        pstmt.setString(6, CurrentLine.substring(147, 150));
        pstmt.setDate(7, headerDate);

        pstmt.executeUpdate();
    } catch (SQLException e) {
        e.printStackTrace(System.out);

    } finally {

        pstmt.close();

    }

}

是否可以将 sql 查询保留在 java 代码之外?(例如在属性文件中)

注意:插入查询根据记录更改,如果它是记录“AAA”,则如果记录不同,则插入查询应遵循一个插入查询。插入查询应更改。

让我知道如何优化我的代码。

4

4 回答 4

2

是的,您应该创建一个包含所有查询的属性文件,并在启动时使用 Properties 对象加载它们,然后使用 Properties 来查找它们。您还可以通过 Spring 将查询注入到您的配置对象中。

我一直在构建数据库对象,将您的代码集成到数据库数据中,并且查询保留在那里,调试和管理要容易得多,因为您需要的一切都在一个地方。

让您的生活变得简单,避免使用 ORM 并调整您的 SQL 查询(或者让 DBA 这样做,这就是他们所做的并且他们擅长)。但是,如果您不喜欢 SQL 或不关心它的效率,那么像 Hibernate 这样的 ORM 可能就是您所需要的。

于 2013-02-13T17:00:44.170 回答
1

也许这会比其他方法花费更多时间,但它会帮助您优化代码。

每个查询/进程都有共同的属性。

  • SQL 查询
  • 字符串模式
  • 参数

并且每个参数都有

  • 位置
  • 数据类型
  • ETC

如果您已经在使用 spring,您将能够在 config.xml 中将它们定义为 bean。如果没有,您仍然可以使用 xml 配置(而不是属性文件)

然后,您必须创建一些类来解析这些 bean 并创建自定义查询。

希望能帮助到你。

于 2013-02-13T18:14:44.417 回答
0

您想使用 JPA。我建议通过一个简单的 JPA 教程,例如:http: //glassfish.java.net/javaee5/persistence/persistence-example.html

该教程将演示如何创建或修改对象并将这些更改保存在数据库中的基础知识。祝你好运。

于 2013-02-13T16:58:01.293 回答
0

尝试使用任何 ORM 框架,如 Hibernate/JPA、Ibatis?

于 2013-02-13T16:44:22.403 回答