/** * Create a new arg-based PreparedStatementSetter using the args passed in. * <p>By default, we'll create an {@link ArgumentPreparedStatementSetter}. * This method allows for the creation to be overridden by subclasses. * @param args object array with arguments * @return the new PreparedStatementSetter to use */ protected PreparedStatementSetter newArgPreparedStatementSetter(@Nullable Object[] args) { return new ArgumentPreparedStatementSetter(args); }
@Override public void setValues(PreparedStatement ps) throws SQLException { if (this.args != null) { for (int i = 0; i < this.args.length; i++) { Object arg = this.args[i]; doSetValue(ps, i + 1, arg); } } }
@Override public PreparedStatement createPreparedStatement(Connection con) throws SQLException { PreparedStatement stmt = con.prepareStatement(select, ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_UPDATABLE); //Set the values ArgumentPreparedStatementSetter setter = new ArgumentPreparedStatementSetter(args); setter.setValues(stmt); return stmt; } }
public RowIterator(DataSource ds, RowMapper<T> rowMapper, String query, Object... params) { try { this.rowMapper = rowMapper; this.con = ds.getConnection(); this.st = con.prepareStatement(query, java.sql.ResultSet.TYPE_FORWARD_ONLY, java.sql.ResultSet.CONCUR_READ_ONLY); if (params != null && params.length > 0) new ArgumentPreparedStatementSetter(params).setValues(st); this.rs = st.executeQuery(); } catch (SQLException e) { close(); throw new RuntimeException(e); } }
public PreparedStatement createPreparedStatement(Connection con) throws SQLException { PreparedStatement ps = con.prepareStatement(boundSql.getSql(), new String[] { pkColumn }); ArgumentPreparedStatementSetter pss = new ArgumentPreparedStatementSetter(boundSql.getParameters() .toArray()); pss.setValues(ps); return ps; } }, keyHolder);
/** * Configures a {@link PreparedStatementSetter} that will use the array as the values * to be set on the query to be executed for this reader. * * @param args values to set on the reader query * @return this instance for method chaining */ public JdbcCursorItemReaderBuilder<T> queryArguments(Object... args) { this.preparedStatementSetter = new ArgumentPreparedStatementSetter(args); return this; }
@Override public void setValues(PreparedStatement ps) throws SQLException { if (this.args != null) { for (int i = 0; i < this.args.length; i++) { Object arg = this.args[i]; doSetValue(ps, i + 1, arg); } } }
@Override public PreparedStatement createPreparedStatement(Connection con) throws SQLException { if(ids.size() != 1) throw new RuntimeException("Wrong base query."); List<Object> args = new ArrayList<>(); String sql = ANNOTATED_POINT_ID_VALUE_SELECT + " where pv.dataPointId = ? and pv.ts < ? order by pv.ts desc"; args.add(ids.get(0)); args.add(before); if(limit != null) { sql += " limit ?"; args.add(limit); } PreparedStatement stmt = con.prepareStatement(sql, ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY); ArgumentPreparedStatementSetter setter = new ArgumentPreparedStatementSetter(args.toArray(new Object[args.size()])); setter.setValues(stmt); return stmt; }
/** * Configures a {@link PreparedStatementSetter} that will use the array as the values * to be set on the query to be executed for this reader. * * @param args values to set on the reader query * @return this instance for method chaining */ public JdbcCursorItemReaderBuilder<T> queryArguments(Object[] args) { this.preparedStatementSetter = new ArgumentPreparedStatementSetter(args); return this; }
/** * {@inheritDoc} */ protected void doSetValue(PreparedStatement ps, int parameterPosition, Object argValue) throws SQLException { super.doSetValue(ps, parameterPosition, Jsr310JdbcUtils.convertIfNecessary(argValue, zoneId)); } }
@Override public PreparedStatement createPreparedStatement(Connection con) throws SQLException { if(ids.size() != 1) throw new RuntimeException("Wrong base query."); List<Object> args = new ArrayList<>(); String sql = ANNOTATED_POINT_ID_VALUE_SELECT + " where pv.dataPointId = ? and pv.ts >= ? and pv.ts<? order by pv.ts asc"; args.add(ids.get(0)); args.add(from); args.add(to); if(limit != null) { sql += " limit ?"; args.add(limit); } PreparedStatement stmt = con.prepareStatement(sql, ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY); ArgumentPreparedStatementSetter setter = new ArgumentPreparedStatementSetter(args.toArray(new Object[args.size()])); setter.setValues(stmt); return stmt; }
/** * Create a new arg-based PreparedStatementSetter using the args passed in. * <p>By default, we'll create an {@link ArgumentPreparedStatementSetter}. * This method allows for the creation to be overridden by subclasses. * @param args object array with arguments * @return the new PreparedStatementSetter to use */ protected PreparedStatementSetter newArgPreparedStatementSetter(@Nullable Object[] args) { return new ArgumentPreparedStatementSetter(args); }
@Override public PreparedStatement createPreparedStatement(Connection con) throws SQLException { if(ids.size() == 1) return super.createPreparedStatement(con); List<Object> args = new ArrayList<>(); String dataPointIds = createDelimitedList(ids, ",", null); String sql = ANNOTATED_POINT_ID_VALUE_SELECT + " where pv.dataPointId in (" + dataPointIds + ") and pv.ts < ? order by pv.ts desc"; args.add(before); if(limit != null) { sql += " limit ?"; args.add(limit); } PreparedStatement stmt = con.prepareStatement(sql, ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY); ArgumentPreparedStatementSetter setter = new ArgumentPreparedStatementSetter(args.toArray(new Object[args.size()])); setter.setValues(stmt); return stmt; } }
} else { PreparedStatement ps = connection.prepareStatement(queries.get(i)); PreparedStatementSetter psSetter = new ArgumentPreparedStatementSetter(args.get(i)); psSetter.setValues(ps); ret += ps.executeUpdate();
ArgumentPreparedStatementSetter setter = new ArgumentPreparedStatementSetter(startValueArgs.toArray(new Object[startValueArgs.size()])); setter.setValues(firstValuesSelect); setter = new ArgumentPreparedStatementSetter(args.toArray(new Object[args.size()])); setter.setValues(stmt); return stmt;
} else { PreparedStatement ps = connection.prepareStatement(queries.get(i)); PreparedStatementSetter psSetter = new ArgumentPreparedStatementSetter(args.get(i)); psSetter.setValues(ps); ret += ps.executeUpdate();
@Override public PreparedStatement createPreparedStatement(Connection con) throws SQLException { if(ids.size() == 1) return super.createPreparedStatement(con); List<Object> args = new ArrayList<>(); String dataPointIds = createDelimitedList(ids, ",", null); String sql = ANNOTATED_POINT_ID_VALUE_SELECT + " WHERE pv.dataPointId in (" + dataPointIds + ") AND pv.ts >= ? AND pv.ts<? ORDER BY pv.ts ASC"; args.add(from); args.add(to); if(limit != null) { sql += " limit ?"; args.add(limit); } PreparedStatement stmt = con.prepareStatement(sql, ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY); ArgumentPreparedStatementSetter setter = new ArgumentPreparedStatementSetter(args.toArray(new Object[args.size()])); setter.setValues(stmt); return stmt; } }
@Override public Object insert(Object entity) { EntityContainer.EntityClassInfo entityClassInfo = EntityContainer.getEntityClassByClazz(entity.getClass()); Object[] packageInsert = packageInsert(new ArrayList<Object>() {{ add(entity); }}, true); String sql = (String) packageInsert[0]; Object[] args = ((List<Object[]>) packageInsert[1]).get(0); if (entityClassInfo.pkFieldNameOpt.isPresent() && entityClassInfo.pkUUIDOpt.isPresent() && entityClassInfo.pkUUIDOpt.get()) { jdbcTemplate.update(sql, args); return ((Optional<String>) packageInsert[2]).get(); } else if (entityClassInfo.pkFieldNameOpt.isPresent()) { KeyHolder keyHolder = new GeneratedKeyHolder(); jdbcTemplate.update(con -> { PreparedStatement ps = con.prepareStatement(sql, new String[]{entityClassInfo.pkFieldNameOpt.get()}); PreparedStatementSetter pss = new ArgumentPreparedStatementSetter(args); pss.setValues(ps); return ps; }, keyHolder); return keyHolder.getKey(); } else { jdbcTemplate.update(sql, args); return 0; } }
ArgumentPreparedStatementSetter setter = new ArgumentPreparedStatementSetter(args); setter.setValues(ps);
@Override public Object insert(Object entity) { EntityContainer.EntityClassInfo entityClassInfo = EntityContainer.getEntityClassByClazz(entity.getClass()); Object[] packageInsert = packageInsert(new ArrayList<Object>() {{ add(entity); }}, true); String sql = (String) packageInsert[0]; Object[] args = ((List<Object[]>) packageInsert[1]).get(0); if (entityClassInfo.pkFieldNameOpt.isPresent() && entityClassInfo.pkUUIDOpt.isPresent() && entityClassInfo.pkUUIDOpt.get()) { jdbcTemplate.update(sql, args); return ((Optional<String>) packageInsert[2]).get(); } else if (entityClassInfo.pkFieldNameOpt.isPresent()) { KeyHolder keyHolder = new GeneratedKeyHolder(); jdbcTemplate.update(con -> { PreparedStatement ps = con.prepareStatement(sql, new String[]{entityClassInfo.pkFieldNameOpt.get()}); PreparedStatementSetter pss = new ArgumentPreparedStatementSetter(args); pss.setValues(ps); return ps; }, keyHolder); return keyHolder.getKey(); } else { jdbcTemplate.update(sql, args); return 0; } }