JAVA - 从连接 SQL 查询将对象添加到 JSON

标签 java mysql json

我希望标题设置得很好......

我有一个现有的 Java 应用程序(我无法更改所有应用程序),它只是使用 gson 库将数据库表公开为 JSON。

我的问题是如何不仅使用数据库的简单字段而且还使用链接的对象创建 Json。

我有一个这样的 table

| objectid | plantid | other_fields |

现在,现有的 gson 只为我提供整数形式的 plantid,但我有一个 plants

| plantid | plantname | other_fields |

我想要带有 Plant 对象的 gson,而不仅仅是 plantid

这就是应用程序如何将 Sql 查询映射到模型

public ArrayList<ObjectsEntity> getObject(String objectId){
        ArrayList<ObjectsEntity> list = new ArrayList<>();
        ResultSet rs = null;
        try {
            Connection connLocal = connFactLocal.getConnection();
            String query = "select * from OBJECTS o left join PLANTS p on o.PLANTID = p.PLANTID "
                    + "left join OBJECTTYPES ot on o.OBJECTTYPEID = ot.OBJECTTYPEID";
            Statement stmt = connLocal.createStatement();
            rs = stmt.executeQuery(query);
            while (rs.next()) {
                ObjectsEntity oe = new ObjectsEntity();
                oe.setOBJECTID(rs.getInt("OBJECTID"));
                oe.setPLANTID(rs.getInt("PLANTID"));
                oe.setOBJECTNAME(rs.getString("OBJECTNAME"));
                oe.setOBJECTTYPEID(rs.getInt("OBJECTTYPEID"));
                oe.setDESCRIPTION(rs.getString("DESCRIPTION"));
                oe.setISMONITORED(rs.getBoolean("ISMONITORED"));
                oe.setGROUP(rs.getString("GROUP"));
                list.add(oe);
            }
        } catch (SQLException e){
            logger.error("SQL Error:",e);
        }
        return list;
    }

ObjectsEntity.java 是一个简单的映射器,带有带有 getter 和 setter 的数据库表 我尝试更改此映射器更新

int PLANTID

Plants plant

但是我不知道如何从查询的结果集中设置植物...有什么想法吗?

最佳答案

您需要使用结果集中的数据填充 Plants 对象,并将其设置在 ObjectsEntity 上。使用 ObjectMapper 您可以将 ObjectsEntity 转换为 JSON 字符串

    while (rs.next()) {
                    ObjectsEntity oe = new ObjectsEntity();
                    oe.setOBJECTID(rs.getInt("OBJECTID"));
                    Plants plants = new Plants();
                    plants.setId(rs.getInt("PLANTID"));
                      //Set other fields.
                    oe.setPLANTS(plants);
                    oe.setOBJECTNAME(rs.getString("OBJECTNAME"));
                    oe.setOBJECTTYPEID(rs.getInt("OBJECTTYPEID"));
                    oe.setDESCRIPTION(rs.getString("DESCRIPTION"));
                    oe.setISMONITORED(rs.getBoolean("ISMONITORED"));
                    oe.setGROUP(rs.getString("GROUP"));
                    list.add(oe);
                }

关于JAVA - 从连接 SQL 查询将对象添加到 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41850697/

相关文章:

ruby-on-rails - Rails 转义 JSON

json - 如何从 Chapel 中的记录返回 JSON 字符串?

java - 如何解决通过 VertexAttribute.ColorUnpacked() 归属颜色的远处对象的闪烁

java - 从 Activity 启动 DialogFragment

java - 从数组中删除重复项

java - JSOUP 为 html 添加额外的编码内容

php - 从 php MySQL 查询输出分号分隔的行

mysql - sql 查询来检查许多兴趣是否匹配

C# SqlConnection 无法连接

json - 带有 JSON 的 Twitter Bootstrap 预输入