I am finding that my DAOs that use the BeanHandler are ending up with a lot
of code like this:

String queryName = "select column1 as beanProp1, column2 as beanProp2,
column3 as beanProp3...."

This gets to be very redundant and clunky for large rows, and it happens
because DbUtils assumes that the column name selected from your query will
be an exact match for the exposed property of your JavaBean.

What I would like to do is define a Map once in my DAO:

Map columnMap = new HashMap();
columnMap.add( "column1", "beanProp1" );
columnMap.add( "column2", "beanProp2" );
...

and then I would like a way to tell DbUtils to override the default name
mappings of columns to properties by using the map I supply.

I have two proposals for how I can accomplish this:

1) I can create an additional constructor for BasicRowProcessor that takes
a nameMap as input. Then I would change the mapColumnsToProperties() method
to check for the existence of such a map when performing the name mapping.

2) Looking at proposal 1, it occurs to me that mapColumnsToProperties is
really more of a ColumnProcessor thing than a RowProcessor thing. I could
refactor so that the BasicRowProcessor delegates to its ColumnProcessor to
provide the mapColumnsToProperties functionality. Now, the nameMap would be
passed into the BasicColumnProcessor class. Also, I would have to change
the method signature for the ColumnProcessor interface so that the process
method takes a colunm name rather than an index number for its second
argument.

If folks are agreeable to either of these two proposals, I am willing to
submit patch and testcase.

Thanks,
Corby



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to