java - IBatis 中的 ArrayList 映射

标签 java ibatis

我应该如何在 IBATIS 中使用 List 映射多个列?

我有一个 Bean,说:

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_1, day_2, ... 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 是特定用户参加的天数?添加您的架构的一些详细信息会很有帮助。有天数的表也有用户 ID? 假设您有类似的情况,您可以执行以下操作(此示例基于 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>   

我必须再次强调,这是一个示例,取决于您存储数据/模式的方式,但希望此示例有所帮助。

关于java - IBatis 中的 ArrayList 映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9515383/

相关文章:

java - 参数中带有 clob 的 oracle 过程(大文本)

java - 如何使用 <T extends Comparable<T>> 实现 Stack<E> ?

java - MyBatis传递多个参数时,如何判断参数属性是否存在?

java - 如何在 ibatis sqlMap 配置中使用文件资源而不是类路径资源?

java - Mybatis映射嵌套类时出现 "java.lang.IllegalArgumentException: Result Maps collection already contains value for"错误

java - MyBatis - 将存储过程输出参数值映射到 POJO

java - Ibatis:将 getter 定义为结果的属性

java - 使用流计算无穷和

java - 使用观察者模式在模型中抛出异常

java - MediaPlayer 在使用 Handler 时出现滞后