I gather the QueryRunner is designed to execute an sql query and give you an object you define instead of a ResultSet. The example nor the apis really tell you what the ResultSetHandler is doing. And what kind of bean are you supposed to setup? I mean, if you do a SELECT * on some table you can get alot of rows back, but with the QueryRunner you only get a single object back. And I'm guessing you define that object yourself. But, is that bean supposed to represent a row of the table returned from your query? If it is, how do you access all of the rows.
The Object returned depends of what kind of ResultSetHandler you pass to the
query method. You can of course make your own handler (like you did), but
there are also ready-made ones available. Look at the javadocs of
BeanHandler, ListHandler, etc. For eaxmple, if you know that your query
contains only one row, you can pass a BeanHandler (the default works, don't
have to implement it!) configured with the expected bean class like
OrderBean order = (OrderBean) runner.query(conn, "SELECT ORDER_ID, TOTAL_AMT
FROM ORDERS", new BeanHandler(OrderBean.class));
and voilÃ, you get an OrderBean back.
If you want a list of OrderBean:s, use a BeanListHandler: List orders = (List) runner.query(conn, "SELECT ORDER_ID, TOTAL_AMT FROM ORDERS", new BeanListHandler(OrderBean.class));
Now every item in the list is an OrderBean.
No magic here; only great stuff that great folks have done for everyone to
use =)
I can see this working nicely with static tables in a database.
In case you have a table with a structure that can expand dynamically, how does this work.
Can DBUtils handles the dynamic table structure scenario ?
Or is there a workaround ?
-- John Zoetebier Web site: http://www.transparent.co.nz
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
