ibatis-user-java mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Larry Meadors" <lmead...@apache.org>
Subject Re: Dynamic Select problem
Date Wed, 05 Apr 2006 13:55:21 GMT
Try this:

   <iterate property="list">
   ,$list[]$
   </iterate>

Larry


On 4/5/06, Chris Bowman <chris@phoros.co.uk> wrote:
> Hi All,
>
> I have a problem with a dynamic select, and having searched the archive
> I have found no answer.
>
> The sutuation:
>
> I have a database where customers can add user defined fields to each
> table, so any data access framework I use must be able to dynamically
> create select statements to handle these unknown fields (the framework
> must work across different customer databases with different user
> defined fields).
>
> All user defined fields begin with 'U_', so I initially do a select to
> get a List of these fields (the table is called Customer)
>
>     results = sqlMap.queryForList("mapper.getCustomerUserFields", null);
>
> This worls fine, and I have a List of user defined Customer fields. Next
> stage is to get the actual dynamic select of the Customer table done. I
> use a parameter class which contains the List and a Customer ID, defined
> as follows:
>
>     <parameterMap id="custParamMap"
> class="com.aoi.data.params.CustomerParam">
>     <parameter property="list"/>
>     <parameter property="id"/>
>     </parameterMap>
>
> I then use the param class to search for specific customers (and their
> dynamic field values):
>
>     <statement id="getPageFields2" parameterMap="custParamMap"
> resultClass="java.util.HashMap">
>     SELECT
>     Customer.Serial_Num
>     <iterate property="list">
>     ,#list[]#
>     </iterate>
>     FROM
>     Customer
>     where Customer.id = #id#
>     </statement>
>
> I turned debug on via Log4j, and got this output:
>
>
> DEBUG 04-05 13:37:55 {pstm-100004} PreparedStatement:  SELECT
> Customer.Serial_Num  ,?  ,?  FROM Customer where customer.id = ?
> (Log4jImpl.java:22)
> DEBUG 04-05 13:37:55 {pstm-100004} Parameters: [U_Destination, U_Resort,
> 1]  (Log4jImpl.java:22)
> DEBUG 04-05 13:37:55 {pstm-100004} Types: [java.lang.String,
> java.lang.String, java.lang.Integer]  (Log4jImpl.java:22)
> DEBUG 04-05 13:37:55 {rset-100005} ResultSet  (Log4jImpl.java:22)
> DEBUG 04-05 13:37:55 {rset-100005} Header: [Serial_Num, expr2, expr3]
> (Log4jImpl.java:22)
> DEBUG 04-05 13:37:55 {rset-100005} Result: [1, U_Destination, U_Resort]
> (Log4jImpl.java:22)
>
> As you can see, the dynamic select is simply treating the List values as
> fixed values rather than column names, and returning them as is. A
> toString on the result map gives:
>
>     {expr2=U_Destination, expr3=U_Resort, Serial_Num=1}
>
> Is there anything I am missing here? I seem to be doing this correctly,
> but I am relatively new to iBatis.
>
> Regards,
>
> Chris Bowman
>

Mime
View raw message