IBatis中的ArrayList映射

问题描述:

如何在IBATIS中使用List映射多个列?IBatis中的ArrayList映射

我有一颗豆,说:

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

ibatis的(在SQLMAP SELECT子句):

<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的daysArray与day_2day_1, ... day_31 in 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); 
} 
+0

'daysArray'类型是什么? '列表'或什么? “日”看起来像什么? – 2012-03-01 12:30:26

+0

你的桌子是怎样的? – 2012-03-01 12:41:01

+0

daysArray是来自数据库的字符串List.List。 – faraz 2012-03-01 12:48:56

Faraz我参加daysArray是特定用户参加的天数?添加模式的一些细节将会很有帮助。具有天数的表还具有用户标识? 假设你有类似的情况,你可以做以下事情(这个例子是基于iBatis版本2.3.4)。

<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> 

我再次强调这是一个例子,取决于你如何存储你的数据/架构是,但希望这个例子有所帮助。