You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user-java@ibatis.apache.org by joeweder <jo...@gmail.com> on 2008/12/12 19:11:24 UTC

Cant reuse resultMaps when I have column aliases

When I define a resultMap for an object, I'd like to do that once and reuse
it everywhere in my application. The problem I have is that for some queries
the column names are not the same and so I wind up having to make another
resultMap using the column-alias names.

This comes up a lot when I use joins. It came up again and I'd really like
to hear from the community if there is a solution. I have "iBatis in
Action", been looking thru the docs, and google... am I missing something?

Take a look at my example below and please suggest, Thanks in advance.

In the example, I have a message object that contains two contacts (sender
and recipient); this means two joins and aliases for the columns. It would
be cool to somehow reuse a single result map passing in a "prefix".

    <resultMap id="senderResultMap" class="contact">
        <result property="id" column="sid"/>
        <result property="name" column="sname"/>
        <result property="emailAddress" column="semailaddress"/>
        <result property="phoneNumber" column="sphonenumber"/>
    </resultMap>

    <resultMap id="recipientResultMap" class="contact">
        <result property="id" column="rid"/>
        <result property="name" column="rname"/>
        <result property="emailAddress" column="remailaddress"/>
        <result property="phoneNumber" column="rphonenumber"/>
    </resultMap>

    <resultMap id="messageResultMap" class="message">
        <result property="id" column="id"/>
        <result property="sender" resultMap="Messages.senderResultMap"/>
        <result property="recipient"
resultMap="Messages.recipientResultMap"/>
        <result property="subject" column="subject"/>
        <result property="content" column="content"/>
    </resultMap>

    <select id="findAll" resultMap="messageResultMap">
        select
            id,
            sender.id sid, sender.name sname, sender.emailaddress
semailaddress, sender.phonenumber  sphonenumber,
            recipient.id rid, recipient.name rname, recipient.emailaddress
remailaddress, recipient.phonenumber rphonenumber,
            subject, content
        from messages m
        left join contacts sender on m.sender = sender.id
        left join contacts recipient on m.recipient = recipient.id
    </select>

-- 
View this message in context: http://www.nabble.com/Cant-reuse-resultMaps-when-I-have-column-aliases-tp20980742p20980742.html
Sent from the iBATIS - User - Java mailing list archive at Nabble.com.