Larry,
that fixed it, thankyou.
Sometimes computers frustrate me more than I can possibly say!
Cheers,
Chris
Larry Meadors wrote:
> 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
>>
>>
>
>
|