我希望标题很好......
我有一个现有的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 ...任何想法?
答案 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);
}