ArrayList Mapping в IBatis - PullRequest
       10

ArrayList Mapping в IBatis

3 голосов
/ 01 марта 2012

Как мне сопоставить несколько столбцов со списком в IBATIS?

У меня есть Боб, скажи:

public class AttendanceBean {
    private String user_id;
    private String user_name;
    private List daysArray;
    // setter/getter methods
}

Ibatis (выберите пункт в sqlMap):

<select id="someName" parameter="param">
   select user_id,user_name,
        day_1,
        day_2,
        day_3,
         ...
         ...
        day_31
    from table1,table2 
    where table1.userid=table2.userid
<select>

Мой вопрос заключается в том, как я собираюсь отобразить массив дней AttendanceBean со столбцами day_1, day_2, ... day_31 в ResultMap, хотя я могу просто написать код JDBC для этого следующим образом:

List alluser = new ArrayList();
while (rs.next()) {
    AttendanceBean ab = new AttendanceBean();
    ab.setUser_id(rs.getString("USER_ID"));
    ab.setUser_name(rs.getString("USER_NAME"));
    List tempArray = new ArrayList(); 
    for (int i=1;i<=noOfDaysinMonth;i++) {
        tempArray.add(rs.getString("DAY_"+i));
    }
    ab.setDayArray(tempArray);
    alluser.add(ab);
}  

1 Ответ

4 голосов
/ 05 апреля 2012

Фараз Я беру daysArray - это количество дней, которое посещал конкретный пользователь?Было бы полезно добавить некоторые детали вашей схемы.Таблица с числом дней также имеет идентификатор пользователя? Предполагая, что у вас есть аналогичный случай, вы можете сделать следующее (этот пример основан на версии 2.3.4 iBatis).

<select id="retrieveAllUserAttendences" resultMap="exampleUserAttendences">
    SELECT 
    table1.user_id, 
    table1.user_name,
    table2.day
    FROM table1
    INNER JOIN table2 ON table2.user_id = table1.user_id
</select>

<resultMap id="exampleUserAttendences" class="AttendanceBean" groupBy="user_id">
    <result property="user_id" column="user_id" jdbcType="VARCHAR" javaType="java.lang.String"/>        
    <result property="user_name" column="user_name" jdbcType="VARCHAR" javaType="java.lang.String"/> 
    <result property="daysArray" resultMap="sqlMapNamespace.exampleDaysResultMap" />       
</resultMap>

<resultMap id="exampleDaysResultMap" class="java.lang.String">
    <result property="daysArray" column="day_column_name" jdbcType="VARCHAR" javaType="java.lang.String"/>
</resultMap>   

Опять же, должен подчеркнуть, что это пример и зависиткак вы храните свои данные / схему, однако надеюсь, что этот пример поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...