0
我有加入一個表本身的查詢:JDBC映射使用現有的RowMapper同桌的加入
SELECT * FROM data d1 join data d2 ON d1.id != d2.id WHERE ...
而且我已經有一個RowMapper
爲Data
,這是表的java對象data
。現在,我可以去和這些字段映射逐一建立兩個數據對象:
jdbcTemplate.query(sql, new RowMapper()
{
@Override
public Object mapRow(ResultSet arg0, int arg1) throws SQLException
{
Data d1 = new Data();
Date d2 = new Date();
Data [] duple = new Data []{d1, d2};
d1.setId(arg0.getLong(1));
d1.setRegistryName(arg0.getString(2));
...
d2.setId(arg0.getLong(11));
d2.setRegistryName(arg0.getString(12));
...
return duple;
}
});
但是,這是一個很大的體力勞動。因此,我可以用我的DataRowMapper
映射的第一個對象,但後來我不得不手動映射第二個:
jdbcTemplate.query(sql, new RowMapper()
{
@Override
public Object mapRow(ResultSet arg0, int arg1) throws SQLException
{
Data d1 = new Data();
Date d2 = new Date();
Data [] duple = new Data []{d1, d2};
d1 = new DataRowMapper<ShopSyncInfo>(Data.class).mapRow(arg0, arg1);
d2.setId(arg0.getLong(11));
d2.setRegistryName(arg0.getString(12));
...
return duple;
}
});
所以我想第二個對象映射以同樣的方式。有沒有辦法做到這一點?