ibatis-user-java mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Andreas Prudzilko <aprud...@welho.com>
Subject Complex mapping
Date Thu, 21 Dec 2006 04:45:38 GMT
Hello,

is there any proper documentation on ibatis? All i found was a wiki-page 
with 30 pages or so and a small pdf. (If yes, could someone give me the 
url?)

Ok but here is my actual problem:

public class User extends ApplicationObject {
    ...
    private Map<UserData, UserField> userfields;
    ....
}

UserData is an Enumeration having a property "name". So basically a 
String but I use enums for type safety.

public enum UserData {
    ...
    private String name;

    UserData(String name) {
        this.name = name;
    }

UserField look like this:

public class UserField extends ApplicationObject {

    private UserData userdata;
    private String content;
    ....
}

Well to put the problem quite simple:

I need to fetch from the table userfield all fields that have a given 
user.id and map the name column there on UserData objects, at last put 
it all into a HashMap.
Now I wonder how I am supposed to write the mappings. So far I have:

in user.xml

   <resultMap id="selectAllResult" class="com.youmove.domain.user.User">
        <result property="id" column="user_id"/>
        <result property="name" column="name"/>
        <result property="surname" column="surname"/>
        <result property="nickname" column="nickname"/>
        <result property="password" column="password"/>
        <result property="email" column="email"/>
        <result property="phonenumber" column="phonenumber"/>
        <result property="userfields" ?BIGQUESTION?/>
    </resultMap>

Something like this would explain it best:
     <result property="userfields" select="UserField.getFieldByUserId" 
/> and then map this all to a HashMap :-D


and of course I have also a userfield.xml with a result map.

    <resultMap id="userFieldResult" 
class="com.youmove.domain.user.UserField">
        <result property="id" column="userfield_id"/>
        <result property="userdata" column="userdata"/>
        <result property="content" column="content"/>
        <result property="visibility" column="visibility"/>
    </resultMap>

    <select id="getFieldByUserId" parameterClass="int" 
resultMap="userFieldResult">
        SELECT * FROM userfield WHERE user_id = #value#
    </select>

Or what is the best way to fetch the data? Maybe some type handlers or 
something. But again, I havent found any good documentation on it.

Cheers,
- Andreas



Mime
View raw message