如何使用 jdbc 将对象的字段保存到数据库中

Posted

技术标签:

【中文标题】如何使用 jdbc 将对象的字段保存到数据库中【英文标题】:How to save fields of object into database using 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 :) 那么您的列表是否包含具有属性的对象列表,还是您的列表仅包含一个对象的所有属性? 【参考方案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;

【讨论】:

以上是关于如何使用 jdbc 将对象的字段保存到数据库中的主要内容,如果未能解决你的问题,请参考以下文章

在java中如何将日期字符串保存到Oracle数据库中对应的Date类型字段中

如何将属性字符串保存到解析服务器对象类型字段中

如何以一个名称将多个对象保存到 CoreData

如何将充满文本字段的 HTML 表的更改保存到数据库

如何使用 django rest 框架保存多对多字段对象

请问各位java中如何将数据库返回的多个字段值拼接为一个list并转换为json对象返回到前台,谢谢!