List of usage examples for org.springframework.jdbc.object BatchSqlUpdate compile
public final void compile() throws InvalidDataAccessApiUsageException
From source file:com.hmsinc.epicenter.tools.reclassifier.Reclassifier.java
@Transactional public void run() { setup();/*from w w w . ja va 2 s. c o m*/ final String destinationTable = (arguments.length > 4) ? arguments[4] : DEFAULT_TABLE_NAME; final String query = new StringBuilder("INSERT INTO ").append(destinationTable) .append(INSERT_CLASSIFICATION).toString(); final BatchSqlUpdate updater = new BatchSqlUpdate(modelDataSource, query); updater.declareParameter(new SqlParameter(Types.BIGINT)); updater.declareParameter(new SqlParameter(Types.BIGINT)); updater.setBatchSize(BATCH_SIZE); updater.compile(); final StatelessSession ss = ((Session) entityManager.getDelegate()).getSessionFactory() .openStatelessSession(); final Criteria c = ss.createCriteria(target.getInteractionClass()) .add(Restrictions.eq("patientClass", target.getPatientClass())).addOrder(Order.asc("id")) .setCacheable(false); if (arguments.length > 2) { c.add(Restrictions.gt("id", Long.valueOf(arguments[2]))); } if (arguments.length > 3) { c.add(Restrictions.lt("id", Long.valueOf(arguments[3]))); } final ScrollableResults sr = c.scroll(ScrollMode.FORWARD_ONLY); int i = 0; while (sr.next()) { final Interaction interaction = (Interaction) sr.get(0); final Set<Classification> classifications = classificationService.classify(interaction, target); save(interaction, classifications, updater); i++; if (i % BATCH_SIZE == 0) { logger.info("Processed {} interactions (current id: {})", i, interaction.getId()); } ((Session) entityManager.getDelegate()).evict(interaction); } sr.close(); updater.flush(); }
From source file:anyframe.core.query.impl.QueryServiceImpl.java
/** * BatchSqlUpdate ? ? ? SQL? Batch ./*from w ww. j a v a 2 s .c o m*/ * * @param sql * query statement. * @param types * is matched with input parameters. A type must belong to fields * defined java.sql.Types package. * @param targets * object of class which is matched with specified table in XML * files. is the List type of Object Array. * @return an array of the number of rows affected by each statement. */ protected int[] batchExecutor(final String sql, int[] types, final List targets) throws QueryServiceException { if (targets.size() <= 0) throw new QueryServiceException(getMessageSource(), "error.query.runtime.batch"); BatchSqlUpdate sqlBatch = new BatchSqlUpdate(); sqlBatch.setJdbcTemplate(jdbcTemplate); sqlBatch.setSql(sql); for (int i = 0; types != null && i < types.length; i++) { SqlParameter sp = new SqlParameter(types[i]); sqlBatch.declareParameter(sp); } sqlBatch.compile(); for (int i = 0; i < targets.size(); i++) { Object obj = targets.get(i); if (obj instanceof Object[]) sqlBatch.update((Object[]) obj); } return sqlBatch.flush(); }