ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

java-IBatis中的ArrayList映射

2019-11-01 17:01:01  阅读:227  来源: 互联网

标签:ibatis java


如何在IBATIS中使用List映射多列?

我有一个豆子,说:

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>

我的问题是我将如何在ResultMap中使用列day_1,day_2,… day_31映射到AttendanceBean的daysArray,即使我可以简单地为此编写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>   

同样,我必须强调,这是一个示例,取决于您存储数据/模式的方式,但是希望该示例对您有所帮助.

标签:ibatis,java
来源: https://codeday.me/bug/20191101/1985020.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有