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

时间:2017-01-25 11:40:27

标签: java mysql json

我希望标题很好......

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

我的问题是如何使用DB的简单字段创建Json,但是使用链接的对象。

我有这样一张桌子

| objectid | plantid | other_fields |

现在gson只给我plantid一个整数,但我有一个plants

| plantid | plantname | other_fields |

我想让植物对象的gson,而不仅仅是 plantid

这是应用程序将Sql查询映射到Model

的方式
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的DB表 我试图更改此映射器更新

int PLANTID

Plants plant

但后来我不知道如何从查询的ResultSet中设置Plants ...任何想法?

1 个答案:

答案 0 :(得分:-1)

您需要使用resultset中的数据填充Plants对象,并在ObjectsEntity上设置它。使用ObjectMapper可以将ObjectsEntity转换为JSON String

    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);
                }