Skip to content
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 opened this issue Apr 21, 2015 · 19 comments
Closed

add resultMap attribute to constructor/arg element #15

GoogleCodeExporter opened this issue Apr 21, 2015 · 19 comments

Comments

@GoogleCodeExporter
Copy link

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 [email protected] on 17 May 2010 at 1:38

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

1 participant