Subject: Re: DynaBeans, DynaClass, DynaMen From: "Vic C." <[EMAIL PROTECTED]> === Looks a bit like http://www.javaworld.com/javaworld/jw-02-2001/jw-0202-cachedrow.html listing #3 of disconnected row set.
Can we get metaData out of it so I can write "auto" updates? So a DAO that has a Iterator of DynaBeans. Where is DynaBean? Commons? Vic Craig R. McClanahan wrote: > I implemented something a little more memory-efficient than this (doesn't > require the entire result set to be in memory) in tonight's nightly build > of commons-beanutils, which will therefore be available in the 20020713 > nightly build of Struts. You use it something like this: > > Connection conn = ...; > Statement stmt = conn.createStatement(); > ResultSet rs = stmt.executeQuery("select * from customers"); > Iterator rows = (new ResultSetDynaClass(rs)).iterator(); > while (rows.hasNext()) { > DynaBean row = (DynaBean) rows.next(); > System.out.println("Processing customer " + row.get("account_id")); > ... access this row as a DynaBean ... > } > rs.close(); > stmt.close(); > > I elected to avoid doing the type conversions, so the properties you get > back will correspond to their types in the database. > > Craig > > > On Fri, 12 Jul 2002 [EMAIL PROTECTED] wrote: > > >>Date: Fri, 12 Jul 2002 13:56:38 -0400 >>From: [EMAIL PROTECTED] >>Reply-To: Struts Users Mailing List <[EMAIL PROTECTED]> >>To: [EMAIL PROTECTED] >>Subject: RE: DynaBeans, DynaClass, DynaMen >> >> >> >>Here is what I am using... Very simple and only returns strings... >> >> >> /** >> * Converts a resultset into an ArrayList of DynaBeans >> * >> * @param resultSet SQL result set to be converted >> * @return ArrayList of DynaBeans with all columnnames converted to >> * lowercase >> * @throws SQLException DOCUMENT ME! >> */ >> private static ArrayList getDynaBeanArrayList(ResultSet resultSet) >> throws SQLException { >> >> ResultSetMetaData metaData = resultSet.getMetaData(); >> int cols = metaData.getColumnCount(); >> ArrayList list = new ArrayList(); >> DynaProperty[] props = new DynaProperty[cols]; >> BasicDynaClass dClass = null; >> >> for (int i = 1; i <= cols; i++) { >> props[i - 1] = new >>DynaProperty(metaData.getColumnName(i).toLowerCase()); >> } >> >> try { >> dClass = new BasicDynaClass("test", >> Class.forName( >> >>"org.apache.commons.beanutils.BasicDynaBean"), >> props); >> } catch (Exception e) { >> e.printStackTrace(); >> } >> >> while (resultSet.next()) { >> >> HashMap map = new HashMap(cols, 1); >> >> for (int i = 1; i <= cols; i++) { >> map.put(metaData.getColumnName(i).toLowerCase(), >> resultSet.getString(i)); >> } >> >> try { >> >> DynaBean dbean = dClass.newInstance(); >> BeanUtils.populate(dbean, map); >> list.add(dbean); >> } catch (Exception e) { >> e.printStackTrace(); >> throw new SQLException("RequestUtils.getArrayList: " >> + e.toString()); >> } >> } // End While >> >> return (list); >> } >> >> >>-----Original Message----- >>From: craigmcc [mailto:[EMAIL PROTECTED]] >>Sent: Friday, July 12, 2002 12:07 PM >>To: struts-user >>Subject: Re: DynaBeans, DynaClass, DynaMen >> >> >> >> >>On Fri, 12 Jul 2002, Thorbjoern Ravn Andersen wrote: >> >> >>>Date: Fri, 12 Jul 2002 07:02:57 +0200 >>>From: Thorbjoern Ravn Andersen <[EMAIL PROTECTED]> >>>Reply-To: Struts Users Mailing List <[EMAIL PROTECTED]> >>>To: Struts Users Mailing List <[EMAIL PROTECTED]> >>>Subject: Re: DynaBeans, DynaClass, DynaMen >>> >>>[EMAIL PROTECTED] skrev: >>> >>> >>>>...anyone remember DynaMen? >>>> >>>>Anyhow... I got a Dynabean mechanism working that builds a DynaBean >>>>based on the metadata of a SQL result set, populates and array of the >>>>little buggers and passes it back to me. For displaying I have a tag >>>>library that does not like a call to get('name') as the field name. >>>>What is the best way to get around this? >>>> >>> >>>I wrote an AnonyBeans package which uses BCEL to generate beans on the >>>fly based on a ResultSet. It is alpha code but works for me, and is >>>usable anywhere where you need a real traditional bean, but where you >> >>do >> >>>not want to serialize it or use its type in Java source. >>> >>>Is this interesting? >>> >> >>I think it would be interestesting, even though it might not be >>universally useful (some containers won't let you introduce new classes >>at >>runtime). >> >>I'd also be interested in a mechanism that converted a ResultSet into a >>custom DynaClass, with a corresponding DynaBean for each row. This >>would >>be trivially simple to do -- so simple that it probably makes a >>worthwhile >>addition to commons-beanutils itself if someone wanted to take this on. >> >>This wouldn't help you create dynamic input forms, but it would make a >>completely flexible bean-like wrapper around a result set so you can use >>Struts tags to display stuff. >> >> >>>-- >>> Thorbjørn Ravn Andersen http://biobase.dk/~tra >> >>Craig >> >> >>-- >>To unsubscribe, e-mail: >><mailto:[EMAIL PROTECTED]> >>For additional commands, e-mail: >><mailto:[EMAIL PROTECTED]> >> >> >> >>-- >>To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> >>For additional commands, e-mail: <mailto:[EMAIL PROTECTED]> >> >> > > > -- > To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> > For additional commands, e-mail: <mailto:[EMAIL PROTECTED]> > -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>