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_2
列day_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);
}
答
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>
我再次强调这是一个例子,取决于你如何存储你的数据/架构是,但希望这个例子有所帮助。
'daysArray'类型是什么? '列表'或什么? “日”看起来像什么? –
2012-03-01 12:30:26
你的桌子是怎样的? – 2012-03-01 12:41:01
daysArray是来自数据库的字符串List.List。 – faraz 2012-03-01 12:48:56