On Fri, Apr 6, 2012 at 6:44 AM, Aaron Daubman <[email protected]> wrote: > I just created an issue and submitted a patch for this: > https://issues.apache.org/jira/browse/CAMEL-5143 >
Thanks for the contribution. Seems like a good improvement. Do you know if the old Apache iBatis project supports a similar functionality like this? We do have a camel-ibatis component as well. But of course people should favor using MyBatis as thats the project that is active. > > On Thu, Apr 5, 2012 at 11:31 PM, Aaron Daubman <[email protected]> wrote: > >> Ugh - I think I found my problem. >> >> The camel-mybatis code will iterate over any list passed in and attempt to >> insert each item individually, bypassing foreach support =( >> >> ---from >> camel/trunk/components/camel-mybatis/src/main/java/org/apache/camel/component/mybatis/MyBatisProducer.java >> --- >> >> private void doInsert(Exchange exchange) throws Exception { >> SqlSessionFactory client = endpoint.getSqlSessionFactory(); >> SqlSession session = client.openSession(); >> try { >> Object result; >> Object in = exchange.getIn().getBody(); >> if (in != null) { >> // lets handle arrays or collections of objects* >> Iterator<?> iter = ObjectHelper.createIterator(in); >> while (iter.hasNext()) {* >> Object value = iter.next(); >> LOG.trace("Inserting: {} using statement: {}", value, >> statement); >> result = session.insert(statement, value); >> doProcessResult(exchange, result); >> } >> } else { >> LOG.trace("Inserting using statement: {}", statement); >> result = session.insert(statement); >> doProcessResult(exchange, result); >> } >> } finally { >> session.commit(); >> session.close(); >> } >> } >> >> ---from >> camel/trunk/components/camel-mybatis/src/main/java/org/apache/camel/component/mybatis/MyBatisProducer.java >> --- >> >> Would it be possible to add a new statementType = 'InsertList' (similar to >> SelectOne versus SelectList) and add it to the switch statement further up >> in the MyBatisProducer.java code? >> >> I believe it would just be removing the iterator related code above and >> simply calling: >> >> result = session.insert(statement, in); >> >> I would be more than happy to contribute this (any reason this should not >> be included?) but have no idea how? Is there a guide to contributing >> changes or a process for obtaining committer rights? >> >> Thanks again, >> Aaron >> >> On Thu, Apr 5, 2012 at 4:32 PM, Aaron Daubman <[email protected]> wrote: >> >>> Greetings, >>> >>> I've found some similar questions asked in the past but there never seem >>> to be followups posted. I am looking for an example as how to perform batch >>> insert operations using MyBatis with Camel. >>> The desire is to be able to most efficiently insert 1000s of records at a >>> time from a List<beanObjet>. >>> >>> My route currently returns such a list - it would be great to pass it >>> right along to: >>> >>> to("mybatis:insertbeanObject?statementType=Insert"); >>> >>> >>> This should be really simple - example SQL would be: >>> ---snip--- >>> INSERT INTO example >>> (example_id, name, value, other_value) >>> VALUES >>> (100, 'Name 1', 'Value 1', 'Other 1'), >>> (101, 'Name 2', 'Value 2', 'Other 2'), >>> (102, 'Name 3', 'Value 3', 'Other 3'), >>> (103, 'Name 4', 'Value 4', 'Other 4'); >>> ---snip--- >>> >>> Then there is this example snippet as how to configure the mapper xml: >>> http://code.google.com/p/mybatis/issues/detail?id=537 >>> >>> >>> I don't see why this wouldn't work (and am working to attempt it), but >>> would find it very useful to see a working example if one exists. >>> >>> There is this mainly unanswered thread: >>> >>> http://mybatis-user.963551.n3.nabble.com/MyBatis-Batch-Executor-td3784939.html >>> >>> Then there is this 'working on something' teaser: >>> >>> http://camel.465427.n5.nabble.com/Alan-batch-database-insert-td4452866.html#a4454264 >>> >>> I am hoping somebody out there has a full example they may be able to >>> share? >>> >>> Thanks! >>> Aaron >>> >> >> -- Claus Ibsen ----------------- CamelOne 2012 Conference, May 15-16, 2012: http://camelone.com FuseSource Email: [email protected] Web: http://fusesource.com Twitter: davsclaus, fusenews Blog: http://davsclaus.blogspot.com/ Author of Camel in Action: http://www.manning.com/ibsen/
