【问题标题】:How to save fields of object into database using jdbc如何使用 jdbc 将对象的字段保存到数据库中
【发布时间】:2012-09-23 09:51:39
【问题描述】:

我正在尝试制作自己的 ORM 框架。我将对象中的值获取到 arrayList 中,并尝试一次性保存它们。我必须制作 for 循环才能将它们全部保存,但我很困惑如何制作?

prepareteState = connect.prepareStatement(Query);
for (int y = 1; y <= obs.size()  ; y++) {
    for(Object obj : obs){
        prepareteState.setObject(y, obj);
        System.out.println(Query);
        System.out.println(prepareteState.toString());
    }
}
prepareteState.execute();

【问题讨论】:

  • 我不想粗鲁,但是如果你不会使用 JDBC 并且不知道如何在 Java 中使用循环,那你为什么还要制作一个新的 ORM 框架?这就像你还不能走路时想攀登珠穆朗玛峰一样。
  • 我知道如何制作循环以及如何使用 jdbc。那个wnen中的问题我有5列实体,我将这些列中的值保存在arraylist中如何在1次设置“插入tableName值(?,?,?,?,?,?)?:)
  • 如果你知道如何使用循环,你就不会有两个嵌套循环在同一个列表上进行迭代,其中一个从 1 到 size 而不是从 0 到 size - 1。如果你知道如何要使用 JDBC,您将知道如何准备语句、绑定参数以及在语句上调用 executeUpdate()。阅读 Java 教程。他们有一个collections 和一个JDBC
  • 我不想粗鲁,但这只是一个未格式化的示例,这个 for 循环从 1 开始,因为 jdbc 中的参数从 1 开始而不是从 0 :)
  • 那么您的列表是否包含具有属性的对象列表,还是您的列表仅包含一个对象的所有属性?

标签: java jdbc orm


【解决方案1】:

感谢您的好建议,但我找到了解决方案 :) 它与第一个想法有点不同,但对我来说效果很好:) 我正在使用 StringBuilder 来制作 String 而不是一个接一个地使用 prepareState 和 setObject并执行查询

private String makeInsertQuery(List<String> listOfColumnsNames, List<Object> listOfParameters, String tableName){
    StringBuilder columns = new StringBuilder();
    StringBuilder parameters = new StringBuilder();
    String query = null;

    if(listOfColumnsNames != null && listOfColumnsNames.size() != 0 && listOfParameters != null && listOfParameters.size() != 0 && tableName != null){
        for(String string : listOfColumnsNames){
            columns.append(string + ",");
        }
        columns.deleteCharAt(columns.length() - 1);

        for(Object object : listOfParameters){
            parameters.append ("'" + object + "'" + ",");
        }
        parameters.deleteCharAt(parameters.length() - 1);

        query = "INSERT " + "INTO " + tableName +  " ( " + columns.toString() + " ) " + " VALUES " + "( " + parameters.toString() + " )" ; 
    }
    //TODO if you need check for null 
    return query;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-12
    • 1970-01-01
    • 1970-01-01
    • 2022-08-16
    相关资源
    最近更新 更多