Java JDBC使用现有行映射器映射同一表的联接

Java JDBC使用现有行映射器映射同一表的联接,java,mysql,spring-jdbc,Java,Mysql,Spring Jdbc,我有一个将表与其自身连接起来的查询: SELECT * FROM data d1 join data d2 ON d1.id != d2.id WHERE ... 我已经有了一个行映射器用于数据,它是表数据的java对象。现在,我可以一个接一个地映射字段并构建两个数据对象: jdbcTemplate.query(sql, new RowMapper() { @Override public Object mapRow(Resul

我有一个将表与其自身连接起来的查询:

SELECT * FROM data d1 join data d2 ON d1.id != d2.id WHERE ...
我已经有了一个
行映射器
用于
数据
,它是表
数据
的java对象。现在,我可以一个接一个地映射字段并构建两个数据对象:

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;
            }
        });
jdbcTemplate.query(sql,新的行映射器()
{
@凌驾
公共对象映射行(结果集arg0,int arg1)引发SQLException
{
数据d1=新数据();
日期d2=新日期();
Data[]duple=新数据[]{d1,d2};
d1=新的DataRowMapper(Data.class).mapRow(arg0,arg1);
d2.setId(arg0.getLong(11));
d2.setRegistryName(arg0.getString(12));
...
返回双工;
}
});

所以我想以同样的方式映射第二个对象。有没有办法做到这一点?

项目中提供了对一对多关系的映射支持。看。您需要将此项目添加到生成中。但是,您不需要额外的Oracle支持,因此以下依赖关系就足够了:

<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-jdbc-core</artifactId>
    <version>1.1.0.RELEASE</version>
</dependency>

org.springframework.data
spring数据jdbc核心
1.1.0.1发布
我认为您也可以将其应用于一对一映射