@Override public long execute() { context = startContext(connection(), metadata, entity); try { if (batches.isEmpty()) { stmt = createStatement(); listeners.notifyUpdate(entity, metadata, updates); return rc; } else { stmts = createStatements(); listeners.notifyUpdates(entity, batches); long rc = executeBatch(stmts); listeners.executed(context); return rc; onException(context,e); throw configuration.translate(queryString, constants, e); } finally { if (stmt != null) { close(stmt); close(stmts); reset(); endContext(context);
@Override public List<SQLBindings> getSQL() { if (batches.isEmpty()) { SQLSerializer serializer = createSerializer(); serializer.serializeUpdate(metadata, entity, updates); return ImmutableList.of(createBindings(metadata, serializer)); } else { ImmutableList.Builder<SQLBindings> builder = ImmutableList.builder(); for (SQLUpdateBatch batch : batches) { SQLSerializer serializer = createSerializer(); serializer.serializeUpdate(batch.getMetadata(), entity, batch.getUpdates()); builder.add(createBindings(metadata, serializer)); } return builder.build(); } }
@Override public long execute() { return isEmpty() ? 0L : super.execute(); }
protected PreparedStatement createStatement() throws SQLException { listeners.preRender(context); SQLSerializer serializer = createSerializer(); serializer.serializeUpdate(metadata, entity, updates); queryString = serializer.toString(); constants = serializer.getConstants(); logQuery(logger, queryString, constants); context.addSQL(createBindings(metadata, serializer)); listeners.prepared(context); listeners.prePrepare(context); PreparedStatement stmt = connection().prepareStatement(queryString); setParameters(stmt, serializer.getConstants(), serializer.getConstantPaths(), metadata.getParams()); context.addPreparedStatement(stmt); listeners.prepared(context); return stmt; }
@Override public String toString() { SQLSerializer serializer = createSerializer(); serializer.serializeUpdate(metadata, entity, updates); return serializer.toString(); }
protected Collection<PreparedStatement> createStatements() throws SQLException { boolean addBatches = !configuration.getUseLiterals(); listeners.preRender(context); SQLSerializer serializer = createSerializer(); serializer.serializeUpdate(batches.get(0).getMetadata(), entity, batches.get(0).getUpdates()); queryString = serializer.toString(); constants = serializer.getConstants(); logQuery(logger, queryString, constants); context.addSQL(createBindings(metadata, serializer)); listeners.rendered(context); PreparedStatement stmt = connection().prepareStatement(queryString); setParameters(stmt, serializer.getConstants(), serializer.getConstantPaths(), metadata.getParams()); if (addBatches) { stmt.addBatch(); serializer = createSerializer(); serializer.serializeUpdate(batches.get(i).getMetadata(), entity, batches.get(i).getUpdates()); context.addSQL(createBindings(metadata, serializer)); listeners.rendered(context); if (stmt == null) { listeners.prePrepare(context); stmt = connection().prepareStatement(serializer.toString()); stmts.put(serializer.toString(), stmt); context.addPreparedStatement(stmt); listeners.prepared(context); setParameters(stmt, serializer.getConstants(), serializer.getConstantPaths(), metadata.getParams()); if (addBatches) {