I have been attempting an implementation on the side while waiting for a reply to this post. Maybe you all can verify it or suggest alternatives.
It uses xstream (http://xstream.codehaus.org) to serialize my java objects, then I can just use xslt to create the desired schema. Performance may be an issue but I haven't completed it yet to get any "formal benchmarks". iBatis still rocks... Even if the xml output support isn't fully there :D Thanks for the feedback. Jason On 8/8/05 6:15 PM, "Larry Meadors" <[EMAIL PROTECTED]> wrote: > I agree, iBATIS does 99% of what you want..but not the XML results. > Hmm, how do I say this nicely...the XML results that you get from > iBATIS suck. (No offense to Clinton, it seemed like a good idea to me, > too.) > > There, I said it, and will have to live with it forever in the archives. > > When you get a list as XML with iBATIS, you get something like this > (abbreviated): > <?xml version="1.0" > encoding="UTF-8"?><Account><accountid>1</accountid>...</Account> > <?xml version="1.0" > encoding="UTF-8"?><Account><accountid>2</accountid>...</Account> > <?xml version="1.0" > encoding="UTF-8"?><Account><accountid>3</accountid>...</Account> > > So, each item in the list is a complete xml document, not a fragment > as you might expect. Obviously, sticking this inside another complete > xml document will make a big boom. > > There are a couple of workarounds that I can think of: > > One is to get all the stuff as a complex collection, and then build > the xml from that. If you want easy coding, and do not care about > database performance, this is the way to go. > > The other is to join all the data, and build a RowHandler to do it > (like you'd do if you were trying to fix the N+1 selects problem in > 1.x). If you are concerned about database performance, and minimizing > the Java memory footprint, this is the way to go. > > If you need more help, let us know... > > Larry > > > On 8/8/05, Jason Vinson <[EMAIL PROTECTED]> wrote: >> Hi guys, >> >> First off, sorry if you get this email twice, I sent the first from an >> un-subscribed email address. Secondly, iBatis rocks! >> >> I'm fairly new to iBatis, but I really dig it so far. It's been a breeze to >> get result set -> pojo mapping for complex objects, but I'm having a bit of >> a tough time getting the same complex objects to map to xml. I'm hoping you >> guys could provide some pointers, since I've not found much info on the >> internet regarding this. >> >> Here's the rundown: >> >> I have a pojo like so: >> >> public class Entity { >> >> private String entityClass; >> >> private String entityClassId; >> >> private long id; >> >> private List attributes; >> >> private List relationshipsOut; >> >> private List relationshipsIn; >> >> /** all getters and setters **/ >> } >> >> And in my mapping file I have the following for the pojo mapping: >> >> <resultMap class="Entity" id="entity-map" > >> >> <result property="id" column="id"/> >> >> <result property="entityClass" column="entityClass"/> >> >> <result property="entityClassId" column="classid"/> >> >> <result property="attributes" column="id" >> select="getAttributesByEntityId"/> >> >> <result property="relationshipsOut" column="id" >> select="getRelationshipsOutByEntityId"/> >> >> <result property="relationshipsIn" column="id" >> select="getRelationshipsInByEntityId"/> >> >> </resultMap> >> >> >> >> <select id="getEntityById" resultMap="entity-map"> >> <![CDATA[ >> select i.entityid as id, e.name as entityClass, i.classid as classid >> >> from EntityClassification i, EntityClass e >> where i.classid=e.id and i.entityid=#value# >> ]]> >> >> </select> >> >> <!-- the other subselects are left out for brevity --> >> >> I am aware that I can change the resultClass to "xml" for the Entity, but >> how can I get the sub-select elements (the three lists) to map to xml all at >> once? >> >> Thanks for a great tool, >> Jason >> >> >>
