ibatis-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From shiva kumar <shiva_ku...@yahoo.co.in>
Subject IBATUS - Fetching a List of List of Strings from the XML Mapping - Help Needed
Date Fri, 18 Dec 2009 07:25:21 GMT

Hi All, 
This is Sivakumar. I am working with a Struts based UI Application. I have a requirement to
externalize all the SQL Queries from the DAO Classes to the XML Files using IBATIS Framework.
I would need your assistance in solving an issue that i am facing while modifying the Queries.
I am facing an issue in a particular method within A DAO  Class where the select query returns
a List of List of Records in the Normal DAO Query. However i am not able to fetch this when
i am using the IBATIS resultClass="list". Please find below the Method below and let me know
your suggestions, so that I could fetch a list of List from the IBATIS XML File Mapping. It
would be really helpful to me. 
    Method before using IBATIS: 
    public List findClaims(ClaimSearchCriteriaVO searchCriteriaVO, UserProfileVO userProfileVO)
throws DAOException { 
      List displayColumns = searchCriteriaVO.getDisplayColumns(); 
      sql = prepareSQL(searchCriteriaVO.getDisplayColumns());
      sql.append(" FROM wrkenv01..WKTV_GP00_CLAIMS WHERE ");
      sql.append("USUS_ID = ? AND ");
      sql.append("GP00_SESSION_ID = ? AND ");
      sql.append("WEB_PAGE_IND = ? "); 
      if (searchCriteriaVO.getClaimSortColumn() != null && !   searchCriteriaVO.getClaimSortColumn().equalsIgnoreCase(Constants.ASTRIX))
        sql.append("ORDER BY " + searchCriteriaVO.getClaimSortColumn()); 
        if (searchCriteriaVO.getClaimSortOrder() != null && searchCriteriaVO.getClaimSortOrder().equalsIgnoreCase("D"))
          sql.append(" DESC "); 
        } else { 
          sql.append(" ASC ");
      pstmt = con.prepareStatement(sql.toString());
      sessionId = String.valueOf(userProfileVO.getSessionId()).trim();
      pstmt.setString(1, userProfileVO.getUserId());
      pstmt.setString(2, sessionId);
      pstmt.setString(3, "S"); // WEB_PAGE_IND 'S' for search
      rs = pstmt.executeQuery();
      searchResultList = new ArrayList(); 
      while (rs.next()) { 
        rowList = new ArrayList();
        if (displayColumns != null) { 
          for (int displayColumnsIter = 0; displayColumnsIter < displayColumns.length;
displayColumnsIter++) { 
    } catch (SQLException ex) { 
      m_logger.error("SQLException in findClaims() :" + ex.getMessage());
      throw new DAOException(ex.getMessage()); 
    } finally { 
      AppDBUtil.closeQueryObjects(rs, pstmt, con);
    return searchResultList;
Method after using IBATIS: DAO.java file 
public List findClaims(ClaimSearchCriteriaVO searchCriteriaVO, UserProfileVO userProfileVO)
throws DAOException { 
    String[] displayColumns = null; 
    String claimSortColumn = null; 
    String claimSortOrder = null; 
    List searchResultList = null; 
    try { 
      displayColumns = searchCriteriaVO.getDisplayColumns(); 
      claimSortColumn = searchCriteriaVO.getClaimSortColumn(); 
      claimSortOrder = DaoUtil.trim(searchCriteriaVO.getClaimSortOrder()); 
      Map findClaimsMap = new HashMap(); 
      findClaimsMap.put("userID", userProfileVO.getUserId()); 
      String sessionId = String.valueOf(userProfileVO.getSessionId()).trim(); 
      findClaimsMap.put("sessionID", sessionId); 
      findClaimsMap.put("webPageInd", "S"); 
      if (displayColumns != null) { 
        findClaimsMap.put("displayColumns", displayColumns); 
      if (claimSortColumn != null && !claimSortColumn.equalsIgnoreCase(Constants.ASTRIX))
        findClaimsMap.put("claimSortColumn", claimSortColumn); 
        if (claimSortOrder != null) { 
          findClaimsMap.put("claimSortOrder", claimSortOrder); 
      SqlMapClient sqlMapQueryBuilder = AppUtil.getSQLMapQueryBuilder(m_logger, sqlMapConfigFile);

      searchResultList = sqlMapQueryBuilder.queryForList("Claim.findClaims", findClaimsMap);

      for (int i = 0; i < searchResultList.size(); i++){ 
        List rowsList = (List) searchResultList.get(i); 
        System.out.println("rowsList "+rowsList.size()); // This should contain all
the Column Values fetched from the Table. But this prints 0 

    } catch (SQLException ex) { 
      m_logger.error("SQLException in findClaims() :" + ex.getMessage()); 
      throw new DAOException(ex.getMessage()); 
    return searchResultList; 
using IBATIS: Query.xml file 
<select id="findClaims" resultClass="list" > 
                  <isPropertyAvailable property="displayColumns"> 
                              <iterate prepend ="," property="displayColumns"


                          </isPropertyAvailable> as claimsList

                         FROM wrkenv01..WKTV_GP00_CLAIMS WHERE 
             USUS_ID = #userID# AND 
             GP00_SESSION_ID = #sessionID# AND 
         WEB_PAGE_IND = #webPageInd# 
         <isPropertyAvailable property="claimSortColumn" > 
                                    ORDER BY $claimSortColumn$

property="claimSortOrder" > 
<isEqual property="claimSortOrder" compareValue="D"> 
<isNotEqual property="claimSortOrder" compareValue="D"> 

Could you please provide your expertise on this? 

      The INTERNET now has a personality. YOURS! See your Yahoo! Homepage. http://in.yahoo.com/
View raw message