Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将sql查询排除在java代码之外_Java_Oracle_Jdbc - Fatal编程技术网

如何将sql查询排除在java代码之外

如何将sql查询排除在java代码之外,java,oracle,jdbc,Java,Oracle,Jdbc,我编写了一个小代码,其功能如下: 读取输入文件 阅读其中的第一行,并检查它是否正确 在特定位置具有值AAA 如果它满足 条件调用方法insertaamethod,并将数据加载到 甲骨文表 如果下一行是recordBBB,请阅读该行,调用具有不同插入查询的insertbbbr方法 问题是我在输入文件中有15个不同的记录,因此我有15个不同的方法,如insertaamethod每个方法都有不同的插入查询: public static void insertAAARecord() throws Exc

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

  • 读取输入文件
  • 阅读其中的第一行,并检查它是否正确 在特定位置具有值
    AAA
  • 如果它满足 条件调用方法
    insertaamethod
    ,并将数据加载到 甲骨文表
  • 如果下一行是record
    BBB
    ,请阅读该行,调用具有不同插入查询的
    insertbbbr方法
  • 问题是我在输入文件中有15个不同的记录,因此我有15个不同的方法,如
    insertaamethod
    每个方法都有不同的插入查询:

    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”,则应遵循一个插入查询如果记录不同,则插入查询应更改


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

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

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

    您想使用JPA。我建议您浏览一个简单的JPA教程,如以下内容:


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

    你想用JPA。我建议您浏览一个简单的JPA教程,如以下内容:


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

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

    我一直在构建DB对象,将您的代码集成到DB数据中,并将查询保存在那里,这样调试和管理起来就容易多了,因为您需要的一切都在一个地方


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

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

    我一直在构建DB对象,将您的代码集成到DB数据中,并将查询保存在那里,这样调试和管理起来就容易多了,因为您需要的一切都在一个地方


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

    也许这比其他方法需要更多的时间,但它会帮助您优化代码

    每个查询/流程都有公共属性

    • SQL查询
    • 字符串模式
    • 参数
    每个参数都有

    • 位置
    • 数据类型
    如果您已经在使用spring,那么就可以在config.xml中将它们定义为bean。 如果没有,您仍然可以使用xml配置(而不是属性文件)

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


    希望有帮助。

    也许这比其他方法需要更多的时间,但它会帮助您优化代码

    每个查询/流程都有公共属性

    • SQL查询
    • 字符串模式
    • 参数
    每个参数都有

    • 位置
    • 数据类型
    如果您已经在使用spring,那么就可以在config.xml中将它们定义为bean。 如果没有,您仍然可以使用xml配置(而不是属性文件)

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


    希望有帮助。

    您能添加一些SQL查询的示例吗?你说它们是不同的,但没有多少不同…为什么不把这些元数据存储在数据库中呢?我非常喜欢JPA,但在这种情况下,由于我们掌握的信息很少,我不推荐使用它。你能添加一些SQL查询的例子吗?你说它们是不同的,但没有多少不同……为什么不将这些元数据存储在数据库中呢?我非常喜欢JPA,但在这种情况下,由于我们掌握的信息很少,我不推荐使用它。使用静态块加载属性文件,并将其中的每个SQL查询分配给一个静态成员变量。+1:这是唯一不需要考虑的答案ORM是此类问题的唯一解决方案。使用静态块加载属性文件,并将其中的每个SQL查询分配给静态成员变量。+1:这是唯一一个不认为ORM是此类问题唯一解决方案的答案。感谢您的回答。.我不使用spring。您能否转发有关如何使用xml配置而不是属性文件的链接或教程。。非常感谢这里有几种方法可以做到这一点,在这个链接是有趣的选择,让我知道如果你需要任何进一步的帮助。谢谢你的回答。我不用弹簧。您能否转发有关如何使用xml配置而不是属性文件的链接或教程。。非常感谢这里有几种方法可以做到这一点,在这个链接是有趣的选择,让我知道如果你需要任何进一步的帮助。