One goal of DbUtils is to not become a "framework". IMO, this feature is
creeping towards framework status. Using an SQL "AS" is simpler and
clearer than writing Java code which forces you to maintain information
about your queries in two separate places, needlessly complicating things.
It's trivial to setup your queries so that you only have to write the
SELECT part once if that's a big deal:
Queries.properties
------------------
query1.select=SELECT fname AS firstName, lname AS lastName
query1.everythingElse=FROM person WHERE id=?
query2.everythingElse=FROM person ORDER BY fname
Java method
--------------
String sql = q.getString("query1.select") +
q.getString("query2.everythingElse");
run.query(sql, ...
David
--- Corby Page <[EMAIL PROTECTED]> wrote:
> 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
__________________________________
Do you Yahoo!?
Free Pop-Up Blocker - Get it now
http://companion.yahoo.com/
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]