ibatis-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Andrey (JIRA)" <ibatis-...@incubator.apache.org>
Subject [jira] Created: (IBATIS-333) Patch which allow to subsititute property with column name from ResultMap in dynamic sql
Date Fri, 18 Aug 2006 13:18:14 GMT
Patch which allow to subsititute property with column name from ResultMap in dynamic sql
----------------------------------------------------------------------------------------

                 Key: IBATIS-333
                 URL: http://issues.apache.org/jira/browse/IBATIS-333
             Project: iBatis for Java
          Issue Type: New Feature
          Components: SQL Maps
    Affects Versions: 2.2.0
            Reporter: Andrey
         Attachments: insertColumnName.patch

In situtation, when i need to implement sorting, I need to create such monster, like abator
creates for me. But
if i only need sorting, here should be mapping beetween columns and properties (if they specified
explicitly
in ResultMap). In this case, i can write 

    <resultMap id="dynamicAccountResult" class="testdomain.Account">
        <result column="ACC_ID" property="id"/>
        <result column="ACC_FIRST_NAME" property="firstName"/>
        <result column="ACC_LAST_NAME" property="lastName"/>
        <result column="ACC_EMAIL" property="emailAddress"/>
    </resultMap>

  <select id="dynamicInsertColumnName"
    parameterClass="string"
    resultMap="dynamicAccountResult">
    select
      ACC_ID,
      ACC_FIRST_NAME,
      ACC_LAST_NAME,
      ACC_EMAIL
    from ACCOUNT
    <dynamic>
      <insertColumnName prepend="where"> = 1</insertColumnName>  <!-- ibatis
replace this with column mapped for "id" passed as unnamed property -->
      <insertColumnName prepend="order by"/> 
    </dynamic>
  </select>

  public void testInsertColumnName() throws SQLException {
    List list = sqlMap.queryForList("dynamicInsertColumnName", "id"); // Here we pass our
property name
    assertEquals(1, list.size());
  }

SQL will be

    select
      ACC_ID,
      ACC_FIRST_NAME,
      ACC_LAST_NAME,
      ACC_EMAIL
    from ACCOUNT
     where ACC_ID = 1
     order by ACC_ID

In any case, we can pass some AccountCriteria which will hold a list with soring properties
names and we can iterate in dynamic sql
and get multiply field "order by" clause

PS: Not all things tested yet. No errors thrown. This is alpha of this feature. This is proof
of conecpt (due of little amount of structural
changes in other ibatis classes). If developers wan't this feature and agree with my decisions,
I'll implement all other bells and whishes
like error checking, tests and may be other extensions for this tag.


-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Mime
View raw message