Skip to content
This repository was archived by the owner on Nov 9, 2017. It is now read-only.
This repository was archived by the owner on Nov 9, 2017. It is now read-only.

add resultMap attribute to constructor/arg element #15

Closed
@GoogleCodeExporter

Description

@GoogleCodeExporter
Reporter:    Ostap Bender

Hi All,

I guess this is a corner case but it is pretty important one for projects
with legacy data models.
Let say there is a table in DB that contains:

Column Type
id int
s1 string
s2 string
s3 string


Also let say it is modeled (historically) by two immutable objects:

public class ObjX
{
private final int id;
private final String s1;
private final ObjY objY;

public ObjX( int id, String s1, ObjY objY )
{
...
}
}

public class ObjY
{
private final String s2;
private final String s3;

public ObjY( String s2, String s3 )
{
...
}
}

In this case there seems to be no way to build a result map for ObjX in
iBatis without changing ObjX code but what if we cannot change it? And the
requirement is to create objects via constructors only.

It would be nice if we could use resultMap in <constructor>/<arg> element.
This way one could write something like:

<resultMap type="ObjX" id="ObjXResult">
        <constructor>
            <idArg column="id" javaType="_int" />
            <arg column="s1" javaType="String" />
            <arg javaType="ObjY" resultMap="ObjYResult"/>
        </constructor>
</resultMap>

<resultMap type="ObjY" id="ObjYResult">
        <constructor>
            <arg column="s2" javaType="String" />
            <arg column="s3" javaType="String" />
        </constructor>
</resultMap>

Comparable result could be achieved with TypeHandler but it will require
column names to be hard-coded in the TypeHandler implementation also will
require adding one TypeHandler per each such a case.

Original issue reported on code.google.com by clinton....@gmail.com on 17 May 2010 at 1:38

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions