Here are the examples of the java api org.springframework.jdbc.support.KeyHolder taken from open source projects. By voting up you can indicate which examples are most useful and appropriate.
99 Examples
19
View Source File : InsertExecutor.java
License : Apache License 2.0
Project Creator : xphsc
License : Apache License 2.0
Project Creator : xphsc
@Override
protected Object doExecute() throws JdbcDataException {
final String sql = this.sqlBuilder.toString();
if (returnKey) {
KeyHolder keyHolder = new GeneratedKeyHolder();
jdbcBuilder.update(new PreparedStatementCreator() {
@Override
public PreparedStatement createPreparedStatement(Connection con) throws SQLException {
PreparedStatement ps = con.prepareStatement(sql.toString(), 1);
int i = 1;
for (ValueElement object : valueElements) {
ps.setObject(i, object.getValue());
i++;
}
return ps;
}
}, keyHolder);
return keyHolder.getKey() != null ? keyHolder.getKey() : primaryKey;
} else {
return this.jdbcBuilder.update(sql, new ValueSetter(LOBHANDLER, this.valueElements));
}
}
19
View Source File : JdbcBuilder.java
License : Apache License 2.0
Project Creator : xphsc
License : Apache License 2.0
Project Creator : xphsc
public int update(final PreparedStatementCreator psc, final KeyHolder generatedKeyHolder) throws DataAccessException {
int rows = jdbcTemplate.update(psc, generatedKeyHolder);
getCacheInstance().clear();
return rows;
}
19
View Source File : MailTemplateDaoImpl.java
License : Apache License 2.0
Project Creator : Xiao-Y
License : Apache License 2.0
Project Creator : Xiao-Y
@Override
public MailTemplatePo save(MailTemplatePo mailTemplatePo) {
String sql = "insert into sys_mail_template(mail_code, mail_type, data_sources, run_sql, mail_temp, mail_markdown, " + "descritpion, to_emails, subject, template_name, single_result, valid_ind, creator_code, " + "updater_code, create_time, update_time) value(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
log.debug("sql:{}", sql);
KeyHolder keyHolder = new GeneratedKeyHolder();
jdbcTemplate.update(new PreparedStatementCreator() {
@Override
public PreparedStatement createPreparedStatement(Connection connection) throws SQLException {
PreparedStatement ps = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
ps.setString(1, mailTemplatePo.getMailCode());
ps.setString(2, mailTemplatePo.getMailType());
ps.setString(3, mailTemplatePo.getDataSources());
ps.setString(4, mailTemplatePo.getRunSql());
ps.setString(5, mailTemplatePo.getMailTemp());
ps.setString(6, mailTemplatePo.getMailMarkdown());
ps.setString(7, mailTemplatePo.getDescritpion());
ps.setString(8, mailTemplatePo.getToEmails());
ps.setString(9, mailTemplatePo.getSubject());
ps.setString(10, mailTemplatePo.getTemplateName());
ps.setBoolean(11, mailTemplatePo.getSingleResult());
// ps.setBoolean(12, mailTemplatePo.getAttachment());
ps.setBoolean(12, mailTemplatePo.getValidInd());
ps.setString(13, mailTemplatePo.getCreatorCode());
ps.setString(14, mailTemplatePo.getUpdaterCode());
ps.setObject(15, mailTemplatePo.getCreateTime());
ps.setObject(16, mailTemplatePo.getUpdateTime());
return ps;
}
}, keyHolder);
mailTemplatePo.setId(keyHolder.getKey().longValue());
return mailTemplatePo;
}
19
View Source File : JdbcClient.java
License : Apache License 2.0
Project Creator : wengwh
License : Apache License 2.0
Project Creator : wengwh
public Integer insert(final String sql, final String pkey, final Object... args) {
log.debug("执行SQL语句:{},参数:{}", sql, args);
KeyHolder keyHolder = new GeneratedKeyHolder();
jdbcTemplate.update(conn -> {
PreparedStatement ps = conn.prepareStatement(sql, new String[] { pkey });
int i = 1;
for (Object o : args) {
ps.setObject(i++, o);
}
return ps;
}, keyHolder);
return keyHolder.getKey().intValue();
}
19
View Source File : SqlUpdate.java
License : MIT License
Project Creator : Vip-Augus
License : MIT License
Project Creator : Vip-Augus
/**
* Method to execute the update given arguments and
* retrieve the generated keys using a KeyHolder.
* @param params array of parameter objects
* @param generatedKeyHolder the KeyHolder that will hold the generated keys
* @return the number of rows affected by the update
*/
public int update(Object[] params, KeyHolder generatedKeyHolder) throws DataAccessException {
if (!isReturnGeneratedKeys() && getGeneratedKeysColumnNames() == null) {
throw new InvalidDataAccessApiUsageException("The update method taking a KeyHolder should only be used when generated keys have " + "been configured by calling either 'setReturnGeneratedKeys' or " + "'setGeneratedKeysColumnNames'.");
}
validateParameters(params);
int rowsAffected = getJdbcTemplate().update(newPreparedStatementCreator(params), generatedKeyHolder);
checkRowsAffected(rowsAffected);
return rowsAffected;
}
19
View Source File : AbstractJdbcInsert.java
License : MIT License
Project Creator : Vip-Augus
License : MIT License
Project Creator : Vip-Augus
/**
* Delegate method to execute the insert, generating a single key.
*/
private Number executeInsertAndReturnKeyInternal(final List<?> values) {
KeyHolder kh = executeInsertAndReturnKeyHolderInternal(values);
if (kh.getKey() != null) {
return kh.getKey();
} else {
throw new DataIntegrityViolationException("Unable to retrieve the generated key for the insert: " + getInsertString());
}
}
19
View Source File : NamedParameterJdbcTemplate.java
License : MIT License
Project Creator : Vip-Augus
License : MIT License
Project Creator : Vip-Augus
@Override
public int update(String sql, SqlParameterSource paramSource, KeyHolder generatedKeyHolder, @Nullable String[] keyColumnNames) throws DataAccessException {
PreparedStatementCreator psc = getPreparedStatementCreator(sql, paramSource, pscf -> {
if (keyColumnNames != null) {
pscf.setGeneratedKeysColumnNames(keyColumnNames);
} else {
pscf.setReturnGeneratedKeys(true);
}
});
return getJdbcOperations().update(psc, generatedKeyHolder);
}
19
View Source File : NamedParameterJdbcTemplate.java
License : MIT License
Project Creator : Vip-Augus
License : MIT License
Project Creator : Vip-Augus
@Override
public int update(String sql, SqlParameterSource paramSource, KeyHolder generatedKeyHolder) throws DataAccessException {
return update(sql, paramSource, generatedKeyHolder, null);
}
19
View Source File : OrderService.java
License : Apache License 2.0
Project Creator : QNJR-GROUP
License : Apache License 2.0
Project Creator : QNJR-GROUP
private Integer saveOrderRecord(JdbcTemplate jdbcTemplate, final int userId, final long money) {
final String INSERT_SQL = "INSERT INTO `order` (`order_id`, `user_id`, `money`, `create_time`) VALUES (NULL, ?, ?, ?);";
KeyHolder keyHolder = new GeneratedKeyHolder();
jdbcTemplate.update(new PreparedStatementCreator() {
@Override
public PreparedStatement createPreparedStatement(Connection connection) throws SQLException {
PreparedStatement ps = connection.prepareStatement(INSERT_SQL, new String[] { "id" });
ps.setInt(1, userId);
ps.setLong(2, money);
ps.setDate(3, new Date(System.currentTimeMillis()));
return ps;
}
}, keyHolder);
return keyHolder.getKey().intValue();
}
19
View Source File : SqlUpdate.java
License : Apache License 2.0
Project Creator : langtianya
License : Apache License 2.0
Project Creator : langtianya
/**
* Method to execute the update given arguments and
* retrieve the generated keys using a KeyHolder.
* @param params array of parameter objects
* @param generatedKeyHolder KeyHolder that will hold the generated keys
* @return the number of rows affected by the update
*/
public int update(Object[] params, KeyHolder generatedKeyHolder) throws DataAccessException {
if (!isReturnGeneratedKeys() && getGeneratedKeysColumnNames() == null) {
throw new InvalidDataAccessApiUsageException("The update method taking a KeyHolder should only be used when generated keys have " + "been configured by calling either 'setReturnGeneratedKeys' or " + "'setGeneratedKeysColumnNames'.");
}
validateParameters(params);
int rowsAffected = getJdbcTemplate().update(newPreparedStatementCreator(params), generatedKeyHolder);
checkRowsAffected(rowsAffected);
return rowsAffected;
}
19
View Source File : AbstractJdbcInsert.java
License : Apache License 2.0
Project Creator : langtianya
License : Apache License 2.0
Project Creator : langtianya
/**
* Delegate method to execute the insert, generating a single key.
*/
private Number executeInsertAndReturnKeyInternal(final List<?> values) {
KeyHolder kh = executeInsertAndReturnKeyHolderInternal(values);
if (kh != null && kh.getKey() != null) {
return kh.getKey();
} else {
throw new DataIntegrityViolationException("Unable to retrieve the generated key for the insert: " + getInsertString());
}
}
19
View Source File : JdbcOperater.java
License : MIT License
Project Creator : fengdis
License : MIT License
Project Creator : fengdis
public int update(PreparedStatementCreator psc, KeyHolder generatedKeyHolder) throws DataAccessException {
return jdbcTemplate.update(psc, generatedKeyHolder);
}
19
View Source File : KeyHolderResult.java
License : Apache License 2.0
Project Creator : fast-sql
License : Apache License 2.0
Project Creator : fast-sql
/**
* 保存数据库自动生成的主键值(或其他值)
* @author ChenJiazhi
*/
public clreplaced KeyHolderResult {
private Integer count;
private KeyHolder keyHolder;
public KeyHolderResult(Integer count, KeyHolder keyHolder) {
this.count = count;
this.keyHolder = keyHolder;
}
public Integer getCount() {
return count;
}
public void setCount(Integer count) {
this.count = count;
}
public KeyHolder getKeyHolder() {
return keyHolder;
}
public void setKeyHolder(KeyHolder keyHolder) {
this.keyHolder = keyHolder;
}
}
19
View Source File : KeyHolderResult.java
License : Apache License 2.0
Project Creator : fast-sql
License : Apache License 2.0
Project Creator : fast-sql
public void setKeyHolder(KeyHolder keyHolder) {
this.keyHolder = keyHolder;
}
19
View Source File : V2_0_1__InitializeIdentityZones.java
License : Apache License 2.0
Project Creator : eclipse
License : Apache License 2.0
Project Creator : eclipse
private Long createDefaultAuthzZone(final JdbcTemplate jdbcTemplate) {
final String insertZoneSql = "INSERT INTO authorization_zone (name, description, subdomain) " + "VALUES (?,?,?)";
KeyHolder holder = new GeneratedKeyHolder();
jdbcTemplate.update(new PreparedStatementCreator() {
@Override
public PreparedStatement createPreparedStatement(final Connection connection) throws SQLException {
PreparedStatement ps = connection.prepareStatement(insertZoneSql, new String[] { "id" });
ps.setString(1, "apm-migrated");
ps.setString(2, "APM Migrated Zone from mvp1");
ps.setString(3, "apm-migrated");
return ps;
}
}, holder);
return holder.getKey().longValue();
}
19
View Source File : BaseDaoImpl.java
License : GNU Affero General Public License v3.0
Project Creator : agnitas-org
License : GNU Affero General Public License v3.0
Project Creator : agnitas-org
/**
* Logs the statement and parameter in debug-level, executes update, retrieves generated keys and logs error.
*
* @param logger a logger to write logs to.
* @param statement an sql-query to execute.
* @param keys a holder for retrieved generated keys.
* @param keyColumns columns to retrieve as a generated keys.
* @param parameter bound parameters for an sql-query.
* @return number of touched lines in db.
*/
protected int update(Logger logger, String statement, KeyHolder keys, String[] keyColumns, Object... parameter) {
try {
validateStatement(statement);
logSqlStatement(logger, statement, parameter);
int touchedLines = getJdbcTemplate().update(connection -> {
PreparedStatement ps = connection.prepareStatement(statement, keyColumns);
for (int i = 0; i < parameter.length; i++) {
ps.setObject(i + 1, parameter[i]);
}
return ps;
}, keys);
if (logger.isDebugEnabled()) {
logger.debug("lines changed by update: " + touchedLines);
}
return touchedLines;
} catch (DataAccessException e) {
logSqlError(e, logger, statement, parameter);
throw e;
} catch (RuntimeException e) {
logSqlError(e, logger, statement, parameter);
throw e;
}
}
18
View Source File : DbUpdate.java
License : Apache License 2.0
Project Creator : yl-yue
License : Apache License 2.0
Project Creator : yl-yue
// Spring Update
/**
* 更新或插入数据<br>
* 同 {@linkplain NamedParameterJdbcTemplate#update(String, SqlParameterSource, KeyHolder)}<br>
*
* @param sql 要执行的更新SQL
* @param paramSource 更新所用到的参数:{@linkplain MapSqlParameterSource},{@linkplain BeanPropertySqlParameterSource}
* @return 自动生成的键(可能由JDBC insert语句返回)或更新的主键id值。
*/
@Transactional
public KeyHolder update(String sql, SqlParameterSource paramSource, KeyHolder generatedKeyHolder) {
getNamedParameterJdbcTemplate().update(sql, paramSource, generatedKeyHolder);
return generatedKeyHolder;
}
18
View Source File : ClientManagerServiceDbImpl.java
License : Apache License 2.0
Project Creator : Xlinlin
License : Apache License 2.0
Project Creator : Xlinlin
/**
* [简要描述]:NamedParameterJdbcTemplate方式插入一条数据,返回主键<br/>
* [详细描述]:<br/>
*
* @param sql : 执行的SQL
* @param params : 参数
* @return java.lang.Long
* llxiao 2019/1/29 - 17:44
*/
private Long insertReKey(String sql, SqlParameterSource params) {
KeyHolder keyHolder = new GeneratedKeyHolder();
namedParameterJdbcTemplate.update(sql, params, keyHolder, new String[] { "id" });
return keyHolder.getKey().longValue();
}
18
View Source File : ClientManagerServiceDbImpl.java
License : Apache License 2.0
Project Creator : Xlinlin
License : Apache License 2.0
Project Creator : Xlinlin
/**
* [简要描述]:jdbcTemplate方式插入一条数据,返回主键<br/>
* [详细描述]:<br/>
*
* @param preparedStatementCreator :
* @return java.lang.Long
* llxiao 2019/1/29 - 17:11
*/
private Long insertReId(PreparedStatementCreator preparedStatementCreator) {
KeyHolder keyHolder = new GeneratedKeyHolder();
jdbcTemplate.update(preparedStatementCreator, keyHolder);
return keyHolder.getKey().longValue();
}
18
View Source File : JdbcTemplateHelper.java
License : Apache License 2.0
Project Creator : x-ream
License : Apache License 2.0
Project Creator : x-ream
@Override
public boolean create(boolean isAutoIncreaseId, String sql, List<Object> valueList) {
KeyHolder keyHolder = new GeneratedKeyHolder();
if (isAutoIncreaseId) {
this.jdbcTemplate.update(connection -> {
PreparedStatement pstmt = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
int i = 1;
for (Object value : valueList) {
pstmt.setObject(i++, value);
}
return pstmt;
}, keyHolder);
} else {
this.jdbcTemplate.update(connection -> {
PreparedStatement pstmt = connection.prepareStatement(sql);
int i = 1;
for (Object value : valueList) {
pstmt.setObject(i++, value);
}
return pstmt;
});
}
if (isAutoIncreaseId) {
return keyHolder.getKey().longValue() > 0;
} else {
return true;
}
}
18
View Source File : AbstractJdbcInsert.java
License : MIT License
Project Creator : Vip-Augus
License : MIT License
Project Creator : Vip-Augus
/**
* Delegate method to execute the insert, generating any number of keys.
*/
private KeyHolder executeInsertAndReturnKeyHolderInternal(final List<?> values) {
if (logger.isDebugEnabled()) {
logger.debug("The following parameters are used for call " + getInsertString() + " with: " + values);
}
final KeyHolder keyHolder = new GeneratedKeyHolder();
if (this.tableMetaDataContext.isGetGeneratedKeysSupported()) {
getJdbcTemplate().update(con -> {
PreparedStatement ps = prepareStatementForGeneratedKeys(con);
setParameterValues(ps, values, getInsertTypes());
return ps;
}, keyHolder);
} else {
if (!this.tableMetaDataContext.isGetGeneratedKeysSimulated()) {
throw new InvalidDataAccessResourceUsageException("The getGeneratedKeys feature is not supported by this database");
}
if (getGeneratedKeyNames().length < 1) {
throw new InvalidDataAccessApiUsageException("Generated Key Name(s) not specified. " + "Using the generated keys features requires specifying the name(s) of the generated column(s)");
}
if (getGeneratedKeyNames().length > 1) {
throw new InvalidDataAccessApiUsageException("Current database only supports retrieving the key for a single column. There are " + getGeneratedKeyNames().length + " columns specified: " + Arrays.asList(getGeneratedKeyNames()));
}
replacedert.state(getTableName() != null, "No table name set");
final String keyQuery = this.tableMetaDataContext.getSimpleQueryForGetGeneratedKey(getTableName(), getGeneratedKeyNames()[0]);
replacedert.state(keyQuery != null, "Query for simulating get generated keys must not be null");
// This is a hack to be able to get the generated key from a database that doesn't support
// get generated keys feature. HSQL is one, PostgreSQL is another. Postgres uses a RETURNING
// clause while HSQL uses a second query that has to be executed with the same connection.
if (keyQuery.toUpperCase().startsWith("RETURNING")) {
Long key = getJdbcTemplate().queryForObject(getInsertString() + " " + keyQuery, values.toArray(), Long.clreplaced);
Map<String, Object> keys = new HashMap<>(2);
keys.put(getGeneratedKeyNames()[0], key);
keyHolder.getKeyList().add(keys);
} else {
getJdbcTemplate().execute((ConnectionCallback<Object>) con -> {
PreparedStatement ps = null;
try {
ps = con.prepareStatement(getInsertString());
setParameterValues(ps, values, getInsertTypes());
ps.executeUpdate();
} finally {
JdbcUtils.closeStatement(ps);
}
Statement keyStmt = null;
ResultSet rs = null;
Map<String, Object> keys = new HashMap<>(2);
try {
keyStmt = con.createStatement();
rs = keyStmt.executeQuery(keyQuery);
if (rs.next()) {
long key = rs.getLong(1);
keys.put(getGeneratedKeyNames()[0], key);
keyHolder.getKeyList().add(keys);
}
} finally {
JdbcUtils.closeResultSet(rs);
JdbcUtils.closeStatement(keyStmt);
}
return null;
});
}
}
return keyHolder;
}
18
View Source File : BatchJdbcTemplate.java
License : Apache License 2.0
Project Creator : tramchamploo
License : Apache License 2.0
Project Creator : tramchamploo
public int update(PreparedStatementCreator psc, KeyHolder generatedKeyHolder) throws DataAccessException {
// not supported right now
return delegate.update(psc, generatedKeyHolder);
}
18
View Source File : SQLModule.java
License : MIT License
Project Creator : ssssssss-team
License : MIT License
Project Creator : ssssssss-team
/**
* 插入并返回主键
*/
@Comment("执行insert操作,返回插入主键")
public long insert(@Comment("`SQL`语句") String sql) {
BoundSql boundSql = new BoundSql(sql);
sqlInterceptors.forEach(sqlInterceptor -> sqlInterceptor.preHandle(boundSql));
KeyHolder keyHolder = new GeneratedKeyHolder();
dataSourceNode.getJdbcTemplate().update(con -> {
PreparedStatement ps = con.prepareStatement(boundSql.getSql(), Statement.RETURN_GENERATED_KEYS);
new ArgumentPreparedStatementSetter(boundSql.getParameters()).setValues(ps);
return ps;
}, keyHolder);
if (this.cacheName != null) {
this.sqlCache.delete(this.cacheName);
}
Number key = keyHolder.getKey();
if (key == null) {
return -1;
}
return key.longValue();
}
18
View Source File : JdbcFooRepository.java
License : Apache License 2.0
Project Creator : spring-projects-experimental
License : Apache License 2.0
Project Creator : spring-projects-experimental
@Override
public void save(Foo foo) {
if (foo.getId() == null) {
KeyHolder holder = new GeneratedKeyHolder();
template.update("INSERT into foos (value) values (:value)", new BeanPropertySqlParameterSource(foo), holder);
foo.setId(holder.getKey().longValue());
} else {
template.update("UPDATE foos set value=:value where id=:id", new BeanPropertySqlParameterSource(foo));
}
}
18
View Source File : EmployeeRepository.java
License : GNU General Public License v3.0
Project Creator : spring-framework-guru
License : GNU General Public License v3.0
Project Creator : spring-framework-guru
/**
* Creates the employee in the database and returns the id of the created employee.
* @param employee the employee to be created
* @return the id of the created employee.
*/
public long saveAndReturnId(Employee employee) {
String sqlQuery = "insert into employees(first_name, last_name, yearly_income) " + "values (?, ?, ?)";
KeyHolder keyHolder = new GeneratedKeyHolder();
jdbcTemplate.update(connection -> {
PreparedStatement stmt = connection.prepareStatement(sqlQuery, new String[] { "id" });
stmt.setString(1, employee.getFirstName());
stmt.setString(2, employee.getLastName());
stmt.setLong(3, employee.getYearlyIncome());
return stmt;
}, keyHolder);
return keyHolder.getKey().longValue();
}
18
View Source File : AbstractJdbcInsert.java
License : Apache License 2.0
Project Creator : SourceHot
License : Apache License 2.0
Project Creator : SourceHot
/**
* Delegate method to execute the insert, generating any number of keys.
*/
private KeyHolder executeInsertAndReturnKeyHolderInternal(final List<?> values) {
if (logger.isDebugEnabled()) {
logger.debug("The following parameters are used for call " + getInsertString() + " with: " + values);
}
final KeyHolder keyHolder = new GeneratedKeyHolder();
if (this.tableMetaDataContext.isGetGeneratedKeysSupported()) {
getJdbcTemplate().update(con -> {
PreparedStatement ps = prepareStatementForGeneratedKeys(con);
setParameterValues(ps, values, getInsertTypes());
return ps;
}, keyHolder);
} else {
if (!this.tableMetaDataContext.isGetGeneratedKeysSimulated()) {
throw new InvalidDataAccessResourceUsageException("The getGeneratedKeys feature is not supported by this database");
}
if (getGeneratedKeyNames().length < 1) {
throw new InvalidDataAccessApiUsageException("Generated Key Name(s) not specified. " + "Using the generated keys features requires specifying the name(s) of the generated column(s)");
}
if (getGeneratedKeyNames().length > 1) {
throw new InvalidDataAccessApiUsageException("Current database only supports retrieving the key for a single column. There are " + getGeneratedKeyNames().length + " columns specified: " + Arrays.asList(getGeneratedKeyNames()));
}
replacedert.state(getTableName() != null, "No table name set");
final String keyQuery = this.tableMetaDataContext.getSimpleQueryForGetGeneratedKey(getTableName(), getGeneratedKeyNames()[0]);
replacedert.state(keyQuery != null, "Query for simulating get generated keys must not be null");
// This is a hack to be able to get the generated key from a database that doesn't support
// get generated keys feature. HSQL is one, PostgreSQL is another. Postgres uses a RETURNING
// clause while HSQL uses a second query that has to be executed with the same connection.
if (keyQuery.toUpperCase().startsWith("RETURNING")) {
Long key = getJdbcTemplate().queryForObject(getInsertString() + " " + keyQuery, values.toArray(), Long.clreplaced);
Map<String, Object> keys = new HashMap<>(2);
keys.put(getGeneratedKeyNames()[0], key);
keyHolder.getKeyList().add(keys);
} else {
getJdbcTemplate().execute((ConnectionCallback<Object>) con -> {
PreparedStatement ps = null;
try {
ps = con.prepareStatement(getInsertString());
setParameterValues(ps, values, getInsertTypes());
ps.executeUpdate();
} finally {
JdbcUtils.closeStatement(ps);
}
Statement keyStmt = null;
ResultSet rs = null;
try {
keyStmt = con.createStatement();
rs = keyStmt.executeQuery(keyQuery);
if (rs.next()) {
long key = rs.getLong(1);
Map<String, Object> keys = new HashMap<>(2);
keys.put(getGeneratedKeyNames()[0], key);
keyHolder.getKeyList().add(keys);
}
} finally {
JdbcUtils.closeResultSet(rs);
JdbcUtils.closeStatement(keyStmt);
}
return null;
});
}
}
return keyHolder;
}
18
View Source File : UserDao.java
License : MIT License
Project Creator : shzlw
License : MIT License
Project Creator : shzlw
public long insertUser(String username, String name, String rawTempPreplacedword, String sysRole) {
String encryptedPreplacedword = PreplacedwordUtils.getMd5Hash(rawTempPreplacedword);
String sql = "INSERT INTO p_user(username, name, temp_preplacedword, sys_role) " + "VALUES(:username, :name, :temp_preplacedword, :sys_role)";
MapSqlParameterSource params = new MapSqlParameterSource();
params.addValue(User.USERNAME, username);
params.addValue(User.NAME, name);
params.addValue(User.TEMP_PreplacedWORD, encryptedPreplacedword);
params.addValue(User.SYS_ROLE, sysRole);
KeyHolder keyHolder = new GeneratedKeyHolder();
npjt.update(sql, params, keyHolder, new String[] { User.ID });
return keyHolder.getKey().longValue();
}
18
View Source File : SharedReportDao.java
License : MIT License
Project Creator : shzlw
License : MIT License
Project Creator : shzlw
public long insert(String shareKey, long reportId, String reportType, long userId, long createdAt, long expiredBy) {
String sql = "INSERT INTO p_shared_report(share_key, report_id, report_type, user_id, created_at, expired_by) " + "VALUES(:share_key, :report_id, :report_type, :user_id, :created_at, :expired_by)";
MapSqlParameterSource params = new MapSqlParameterSource();
params.addValue(SharedReport.SHARE_KEY, shareKey);
params.addValue(SharedReport.REPORT_ID, reportId);
params.addValue(SharedReport.REPORT_TYPE, reportType);
params.addValue(SharedReport.USER_ID, userId);
params.addValue(SharedReport.CREATED_AT, createdAt);
params.addValue(SharedReport.EXPIRED_BY, expiredBy);
KeyHolder keyHolder = new GeneratedKeyHolder();
npjt.update(sql, params, keyHolder, new String[] { SharedReport.ID });
return keyHolder.getKey().longValue();
}
18
View Source File : ComponentDao.java
License : MIT License
Project Creator : shzlw
License : MIT License
Project Creator : shzlw
public long insert(String name, String style) {
String sql = "INSERT INTO p_report(name, style) VALUES(:name, :style)";
MapSqlParameterSource params = new MapSqlParameterSource();
params.addValue(Report.NAME, name);
params.addValue(Report.STYLE, style);
KeyHolder keyHolder = new GeneratedKeyHolder();
npjt.update(sql, params, keyHolder, new String[] { Report.ID });
return keyHolder.getKey().longValue();
}
18
View Source File : OrderService.java
License : Apache License 2.0
Project Creator : QNJR-GROUP
License : Apache License 2.0
Project Creator : QNJR-GROUP
private Integer saveOrderRecord(final int userId, final long money) {
final String INSERT_SQL = "INSERT INTO `order` (`order_id`, `user_id`, `money`, `create_time`) VALUES (NULL, ?, ?, ?);";
KeyHolder keyHolder = new GeneratedKeyHolder();
jdbcTemplate.update(new PreparedStatementCreator() {
@Override
public PreparedStatement createPreparedStatement(Connection connection) throws SQLException {
PreparedStatement ps = connection.prepareStatement(INSERT_SQL, new String[] { "id" });
ps.setInt(1, userId);
ps.setLong(2, money);
ps.setDate(3, new Date(System.currentTimeMillis()));
return ps;
}
}, keyHolder);
return keyHolder.getKey().intValue();
}
18
View Source File : OrderService.java
License : Apache License 2.0
Project Creator : QNJR-GROUP
License : Apache License 2.0
Project Creator : QNJR-GROUP
public void cancelOrder(int orderId) {
/**
* usually we will only update a status of order instead of delete
* but i did not define a status in the demo schema,so just delete instead
*
* 通常不会直接删除之前创建记录,仅仅只是更新记录的状态
* 但是在测试的表结构里没有定义status字段,因此在样例代码里直接删除
*/
final String INSERT_SQL = "DELETE FROM `order` WHERE `order_id`= ?";
KeyHolder keyHolder = new GeneratedKeyHolder();
jdbcTemplate.update(new PreparedStatementCreator() {
@Override
public PreparedStatement createPreparedStatement(Connection connection) throws SQLException {
PreparedStatement ps = connection.prepareStatement(INSERT_SQL, new String[] { "id" });
ps.setInt(1, orderId);
return ps;
}
}, keyHolder);
}
18
View Source File : CustomJdbcTemplate.java
License : Apache License 2.0
Project Creator : penggle
License : Apache License 2.0
Project Creator : penggle
public int[] batchUpdate(final String sql, final BatchPreparedStatementSetter pss, final KeyHolder generatedKeyHolder) throws DataAccessException {
return execute(new PreparedStatementCreator() {
@Override
public PreparedStatement createPreparedStatement(Connection conn) throws SQLException {
return conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
}
}, new PreparedStatementCallback<int[]>() {
@Override
public int[] doInPreparedStatement(PreparedStatement ps) throws SQLException, DataAccessException {
if (logger.isDebugEnabled()) {
logger.debug("Executing SQL batch update and returning generated keys [" + sql + "]");
}
try {
int batchSize = pss.getBatchSize();
int totalRowsAffected = 0;
int[] rowsAffected = new int[batchSize];
List<Map<String, Object>> generatedKeys = generatedKeyHolder.getKeyList();
generatedKeys.clear();
if (JdbcUtils.supportsBatchUpdates(ps.getConnection())) {
for (int i = 0; i < batchSize; i++) {
pss.setValues(ps, i);
ps.addBatch();
}
rowsAffected = ps.executeBatch();
for (int i = 0, len = rowsAffected.length; i < len; i++) {
totalRowsAffected += rowsAffected[i];
}
extractGeneratedKeys(ps, generatedKeys, (int) (rowsAffected.length * 1.5));
} else {
for (int i = 0; i < batchSize; i++) {
pss.setValues(ps, i);
rowsAffected[i] = ps.executeUpdate();
totalRowsAffected += rowsAffected[i];
extractGeneratedKeys(ps, generatedKeys, 1);
}
}
if (logger.isDebugEnabled()) {
logger.debug("SQL batch update affected " + totalRowsAffected + " rows and returned " + generatedKeys.size() + " keys");
}
return rowsAffected;
} finally {
if (pss instanceof ParameterDisposer) {
((ParameterDisposer) pss).cleanupParameters();
}
}
}
});
}
18
View Source File : CityDAO.java
License : MIT License
Project Creator : PacktPublishing
License : MIT License
Project Creator : PacktPublishing
public Long addCity(String countryCode, City city) {
SqlParameterSource paramSource = new MapSqlParameterSource(getMapForCity(countryCode, city));
KeyHolder keyHolder = new GeneratedKeyHolder();
namedParamJdbcTemplate.update("INSERT INTO city(" + " name, countrycode, " + " district, population) " + " VALUES (:name, :country_code, " + " :district, :population )", paramSource, keyHolder);
return keyHolder.getKey().longValue();
}
18
View Source File : GithubJobUI.java
License : GNU General Public License v3.0
Project Creator : mintster
License : GNU General Public License v3.0
Project Creator : mintster
public long getCurrentGithubId() {
KeyHolder keyHolder = new GeneratedKeyHolder();
String sql = "SELECT stat_id FROM github_stats WHERE stat_date = current_date()";
long statId = -1;
try {
statId = jdbcTemplate.queryForObject(sql, Long.clreplaced);
} catch (EmptyResultDataAccessException e) {
jdbcTemplate.update(new PreparedStatementCreator() {
String INSERT_SQL = "INSERT INTO github_stats (stat_date) VALUES (current_date())";
public PreparedStatement createPreparedStatement(Connection cn) throws SQLException {
PreparedStatement ps = cn.prepareStatement(INSERT_SQL, new String[] { "stat_id" });
return ps;
}
}, keyHolder);
statId = keyHolder.getKey().longValue();
}
logger.info("Current GitHub Stats ID: " + statId);
return statId;
}
18
View Source File : RideRepositoryImpl.java
License : Apache License 2.0
Project Creator : linnykoleh
License : Apache License 2.0
Project Creator : linnykoleh
/**
* Alternative to RideRepositoryImpl#createRide(com.pluralsight.model.Ride)
*/
public Ride createRideKeyHolderJDBC(Ride ride) {
final KeyHolder keyHolder = new GeneratedKeyHolder();
jdbcTemplate.update(connection -> {
PreparedStatement ps = connection.prepareStatement("insert INTO RIDE(NAME, DURATION) values (?, ?)", new String[] { "id" });
ps.setString(1, ride.getName());
ps.setInt(2, ride.getDuration());
return ps;
}, keyHolder);
return getRide(keyHolder.getKey());
}
18
View Source File : SQL.java
License : Apache License 2.0
Project Creator : fast-sql
License : Apache License 2.0
Project Creator : fast-sql
public KeyHolderResult updateForKey(String... keyColumns) {
checkNull();
KeyHolder keyHolder = new GeneratedKeyHolder();
int count;
String sql = strBuilder.toString();
if (useClreplacedicJdbcTemplate) {
// TODO 只能使用命名参数形式
throw new UnsupportedOperationException("updateForKey() 目前只能使用命名参数形式");
// PreparedStatementCreatorFactory preparedStatementCreatorFactory = new PreparedStatementCreatorFactory(sql);
//
//
// PreparedStatementCreator creator = preparedStatementCreatorFactory
// .newPreparedStatementCreator(Arrays.asList(this.varParams));
//
//
// count = this.namedParameterJdbcTemplate.getJdbcOperations().update(
// creator, keyHolder);
} else {
count = this.namedParameterJdbcTemplate.update(sql, this.sqlParameterSource, keyHolder, keyColumns);
}
if (count < 1) {
logger.warn("update更新成功数量为" + count);
}
return new KeyHolderResult(count, keyHolder);
}
18
View Source File : CloudRegionDao.java
License : Apache License 2.0
Project Creator : epam
License : Apache License 2.0
Project Creator : epam
/**
* Stores a new cloud region.
*
* @param region to be stored.
* @param credentials if specified then cloud region credentials will be stored as well.
* @return Stored cloud region.
*/
public AbstractCloudRegion create(final AbstractCloudRegion region, final AbstractCloudRegionCredentials credentials) {
final KeyHolder keyHolder = new GeneratedKeyHolder();
getNamedParameterJdbcTemplate().update(createRegionQuery, getParameters(region, credentials), keyHolder, new String[] { CloudRegionParameters.REGION_ID.name().toLowerCase() });
region.setId(keyHolder.getKey().longValue());
return region;
}
18
View Source File : TransactionDaoImpl.java
License : Apache License 2.0
Project Creator : dapeng-soa
License : Apache License 2.0
Project Creator : dapeng-soa
/**
* 插入子事务过程记录,返回id
*
* @param gp
* @return
*/
@Override
public Integer insert(TGlobalTransactionProcess gp) {
final String strSql = "insert into global_transaction_process(transaction_id,transaction_sequence,status,expected_status,service_name,version_name,method_name,rollback_method_name," + "request_json, response_json,redo_times,next_redo_time, created_by, updated_by,created_at) values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
KeyHolder keyHolder = new GeneratedKeyHolder();
this.getJdbcTemplate().update(conn -> {
int i = 0;
PreparedStatement ps = conn.prepareStatement(strSql);
ps = conn.prepareStatement(strSql, Statement.RETURN_GENERATED_KEYS);
ps.setInt(++i, gp.getTransactionId());
ps.setInt(++i, gp.getTransactionSequence());
ps.setInt(++i, gp.getStatus().getValue());
ps.setInt(++i, gp.getExpectedStatus().getValue());
ps.setString(++i, gp.getServiceName());
ps.setString(++i, gp.getVersionName());
ps.setString(++i, gp.getMethodName());
ps.setString(++i, gp.getRollbackMethodName());
ps.setString(++i, gp.getRequestJson());
ps.setString(++i, gp.getResponseJson());
ps.setInt(++i, gp.getRedoTimes());
ps.setTimestamp(++i, new Timestamp(gp.getNextRedoTime().getTime()));
ps.setInt(++i, gp.getCreatedBy() == null ? 0 : gp.getCreatedBy());
ps.setInt(++i, gp.getUpdatedBy() == null ? 0 : gp.getUpdatedBy());
ps.setTimestamp(++i, new Timestamp(gp.getCreatedAt() == null ? new java.util.Date().getTime() : gp.getCreatedAt().getTime()));
return ps;
}, keyHolder);
return keyHolder.getKey().intValue();
}
18
View Source File : TransactionDaoImpl.java
License : Apache License 2.0
Project Creator : dapeng-soa
License : Apache License 2.0
Project Creator : dapeng-soa
/**
* 插入记录,返回id
*
* @param g
* @return
*/
@Override
public Integer insert(TGlobalTransaction g) {
final String strSql = "insert into global_transactions(status, curr_sequence, created_at, created_by, updated_by) values(?, ?, ?, ?, ?)";
KeyHolder keyHolder = new GeneratedKeyHolder();
this.getJdbcTemplate().update(conn -> {
int i = 0;
PreparedStatement ps = conn.prepareStatement(strSql);
ps = conn.prepareStatement(strSql, Statement.RETURN_GENERATED_KEYS);
ps.setInt(++i, g.getStatus().getValue());
ps.setInt(++i, g.getCurrSequence());
ps.setTimestamp(++i, new Timestamp(g.getCreatedAt() == null ? new java.util.Date().getTime() : g.getCreatedAt().getTime()));
ps.setInt(++i, g.getCreatedBy());
ps.setInt(++i, g.getCreatedBy());
return ps;
}, keyHolder);
return keyHolder.getKey().intValue();
}
18
View Source File : JdbcTemplateDao.java
License : MIT License
Project Creator : Byron4j
License : MIT License
Project Creator : Byron4j
public Long insertUser(String nickName) {
final String INSERT_SQL = "insert into User (nick_name) values(?)";
final String name = nickName;
KeyHolder keyHolder = new GeneratedKeyHolder();
jdbcTemplate.update(new PreparedStatementCreator() {
public PreparedStatement createPreparedStatement(Connection connection) throws SQLException {
PreparedStatement ps = connection.prepareStatement(INSERT_SQL, new String[] { "id" });
ps.setString(1, name);
return ps;
}
}, keyHolder);
// 获取插入后的自增主键值
return keyHolder.getKey().longValue();
}
18
View Source File : AnylineDaoImpl.java
License : Apache License 2.0
Project Creator : anylineorg
License : Apache License 2.0
Project Creator : anylineorg
/**
* 添加
* @param checkParimary 是否需要检查重复主键,默认不检查
* @param columns 需要插入的列
* @param dest dest
* @param data data
* @return return
*/
@Override
public int insert(String dest, Object data, boolean checkParimary, String... columns) {
RunSQL run = SQLCreaterUtil.getCreater(getJdbc()).createInsertTxt(dest, data, checkParimary, columns);
if (null == run) {
return 0;
}
int cnt = 0;
final String sql = run.getInsertTxt();
final List<Object> values = run.getValues();
KeyHolder keyholder = new GeneratedKeyHolder();
long fr = System.currentTimeMillis();
String random = "";
if (showSQL) {
random = "[SQL:" + System.currentTimeMillis() + "-" + BasicUtil.getRandomNumberString(8) + "][thread:" + Thread.currentThread().getId() + "][ds:" + DataSourceHolder.getDataSource() + "]";
log.warn(random + "[txt:\n{}\n]", sql);
log.warn(random + "[参数:{}]", paramLogFormat(values));
}
try {
cnt = getJdbc().update(new PreparedStatementCreator() {
@Override
public PreparedStatement createPreparedStatement(Connection con) throws SQLException {
PreparedStatement ps = con.prepareStatement(sql, PreparedStatement.RETURN_GENERATED_KEYS);
int idx = 0;
if (null != values) {
for (Object obj : values) {
ps.setObject(++idx, obj);
}
}
return ps;
}
}, keyholder);
if (cnt == 1) {
try {
int id = (int) keyholder.getKey().longValue();
setPrimaryValue(data, id);
} catch (Exception e) {
}
}
if (showSQL) {
log.warn(random + "[执行耗时:{}ms][影响行数:{}]", System.currentTimeMillis() - fr, cnt);
}
} catch (Exception e) {
e.printStackTrace();
if (showSQLWhenError) {
log.error(random + "[异常][txt:\n{}\n]", sql);
log.error(random + "[异常参数][param:{}]", paramLogFormat(values));
}
throw new SQLUpdateException("插入异常:" + e);
} finally {
// 自动切换回默认数据源
if (DataSourceHolder.isAutoDefault()) {
DataSourceHolder.recoverDataSource();
}
}
return cnt;
}
17
View Source File : TransactionLogStorage.java
License : Apache License 2.0
Project Creator : spring-avengers
License : Apache License 2.0
Project Creator : spring-avengers
public void insertBranchLog(BranchLog branchLog) {
PreparedStatementCreator psc = new PreparedStatementCreator() {
@Override
public PreparedStatement createPreparedStatement(Connection con) throws SQLException {
PreparedStatement ps = con.prepareStatement("insert into dts_branch_record (trans_id,state,resource_ip,resource_info,gmt_created,gmt_modified)" + " values (?,?,?,?,now(),now())", Statement.RETURN_GENERATED_KEYS);
ps.setLong(1, branchLog.getTransId());
ps.setInt(2, branchLog.getState());
ps.setString(3, branchLog.getResourceIp());
ps.setString(4, branchLog.getResourceInfo());
return ps;
}
};
KeyHolder keyHolder = new GeneratedKeyHolder();
jdbcTemplate.update(psc, keyHolder);
long branchId = keyHolder.getKey().longValue();
branchLog.setBranchId(branchId);
branchLog.setGmtCreated(Calendar.getInstance().getTime());
branchLog.setGmtModified(Calendar.getInstance().getTime());
}
17
View Source File : ReportDao.java
License : MIT License
Project Creator : shzlw
License : MIT License
Project Creator : shzlw
public long insert(String name, String style, String project) {
String sql = "INSERT INTO p_report(name, style, project) VALUES(:name, :style, :project)";
MapSqlParameterSource params = new MapSqlParameterSource();
params.addValue(Report.NAME, name);
params.addValue(Report.STYLE, style);
params.addValue(Report.PROJECT, project);
KeyHolder keyHolder = new GeneratedKeyHolder();
npjt.update(sql, params, keyHolder, new String[] { Report.ID });
return keyHolder.getKey().longValue();
}
17
View Source File : CannedReportDao.java
License : MIT License
Project Creator : shzlw
License : MIT License
Project Creator : shzlw
public long insert(long userId, long createdAt, String name, String data) {
String sql = "INSERT INTO p_canned_report(user_id, created_at, name, data) " + "VALUES(:user_id, :created_at, :name, :data)";
MapSqlParameterSource params = new MapSqlParameterSource();
params.addValue(CannedReport.USER_ID, userId);
params.addValue(CannedReport.CREATED_AT, createdAt);
params.addValue(CannedReport.NAME, name);
params.addValue(CannedReport.DATA, data);
KeyHolder keyHolder = new GeneratedKeyHolder();
npjt.update(sql, params, keyHolder, new String[] { CannedReport.ID });
return keyHolder.getKey().longValue();
}
17
View Source File : DefaultTemplateConfigDaoImpl.java
License : MIT License
Project Creator : qunarcorp
License : MIT License
Project Creator : qunarcorp
@Override
public long insert(final String templateConfig) {
KeyHolder keyHolder = new GeneratedKeyHolder();
jdbcTemplate.update(new PreparedStatementCreator() {
@Override
public PreparedStatement createPreparedStatement(Connection con) throws SQLException {
PreparedStatement ps = con.prepareStatement("INSERT INTO default_template_config(config) VALUES(?)", PreparedStatement.RETURN_GENERATED_KEYS);
ps.setString(1, templateConfig);
return ps;
}
}, keyHolder);
return keyHolder.getKey().longValue();
}
17
View Source File : JdbcCalendarUserDao.java
License : MIT License
Project Creator : PacktPublishing
License : MIT License
Project Creator : PacktPublishing
@Override
public int createUser(final CalendarUser userToAdd) {
if (userToAdd == null) {
throw new IllegalArgumentException("userToAdd cannot be null");
}
if (userToAdd.getId() != null) {
throw new IllegalArgumentException("userToAdd.getId() must be null when creating a " + CalendarUser.clreplaced.getName());
}
KeyHolder keyHolder = new GeneratedKeyHolder();
this.jdbcOperations.update(new PreparedStatementCreator() {
public PreparedStatement createPreparedStatement(Connection connection) throws SQLException {
PreparedStatement ps = connection.prepareStatement("insert into calendar_users (email, preplacedword, first_name, last_name) values (?, ?, ?, ?)", new String[] { "id" });
ps.setString(1, userToAdd.getEmail());
ps.setString(2, userToAdd.getPreplacedword());
ps.setString(3, userToAdd.getFirstName());
ps.setString(4, userToAdd.getLastName());
return ps;
}
}, keyHolder);
return keyHolder.getKey().intValue();
}
17
View Source File : InMemoryOrderRepository.java
License : MIT License
Project Creator : PacktPublishing
License : MIT License
Project Creator : PacktPublishing
private long saveAddress(Address address) {
String SQL = "INSERT INTO ADDRESS(DOOR_NO,STREET_NAME,AREA_NAME,STATE,COUNTRY,ZIP) " + "VALUES (:doorNo, :streetName, :areaName, :state, :country, :zip)";
Map<String, Object> params = new HashMap<String, Object>();
params.put("doorNo", address.getDoorNo());
params.put("streetName", address.getStreetName());
params.put("areaName", address.getAreaName());
params.put("state", address.getState());
params.put("country", address.getCountry());
params.put("zip", address.getZipCode());
SqlParameterSource paramSource = new MapSqlParameterSource(params);
KeyHolder keyHolder = new GeneratedKeyHolder();
jdbcTempleate.update(SQL, paramSource, keyHolder, new String[] { "ID" });
return keyHolder.getKey().longValue();
}
17
View Source File : InMemoryOrderRepository.java
License : MIT License
Project Creator : PacktPublishing
License : MIT License
Project Creator : PacktPublishing
private long saveCustomer(Customer customer) {
long addressId = saveAddress(customer.getBillingAddress());
String SQL = "INSERT INTO CUSTOMER(NAME,PHONE_NUMBER,BILLING_ADDRESS_ID) " + "VALUES (:name, :phoneNumber, :addressId)";
Map<String, Object> params = new HashMap<String, Object>();
params.put("name", customer.getName());
params.put("phoneNumber", customer.getPhoneNumber());
params.put("addressId", addressId);
SqlParameterSource paramSource = new MapSqlParameterSource(params);
KeyHolder keyHolder = new GeneratedKeyHolder();
jdbcTempleate.update(SQL, paramSource, keyHolder, new String[] { "ID" });
return keyHolder.getKey().longValue();
}
17
View Source File : BaseRepository.java
License : MIT License
Project Creator : myliang
License : MIT License
Project Creator : myliang
public long insert(List<String> columns, List<Object> args, int[] types) {
String insertColumns = primaryKeyName();
String insertPlaceholders = "nextval('" + tableName() + "_id_seq')";
for (String column : columns) {
insertColumns += "," + column;
insertPlaceholders += ",?";
}
insertColumns += ", " + createdAtName();
insertPlaceholders += ", now()";
insertColumns += ", " + updatedAtName();
insertPlaceholders += ", now()";
String sql = "insert into " + tableName() + " (" + insertColumns + ") values (" + insertPlaceholders + ")";
KeyHolder keyHolder = new GeneratedKeyHolder();
PreparedStatementCreatorFactory pscf = new PreparedStatementCreatorFactory(sql, types);
pscf.setReturnGeneratedKeys(true);
try {
logger.info("insert.sql: {}, args: {}", sql, jsonMapper.writeValuereplacedtring(args));
} catch (JsonProcessingException e) {
e.printStackTrace();
}
writeJdbcTemplate.update(pscf.newPreparedStatementCreator(args), keyHolder);
if (keyHolder.getKeyList() != null && !keyHolder.getKeyList().isEmpty()) {
return (long) keyHolder.getKeyList().get(0).get(primaryKeyName());
}
return -1;
}
17
View Source File : GitHubTests.java
License : GNU General Public License v3.0
Project Creator : mintster
License : GNU General Public License v3.0
Project Creator : mintster
@Test
public void githubStatRecordKeyReturned() throws Exception {
KeyHolder keyHolder = new GeneratedKeyHolder();
long statId = -1L;
try {
statId = jdbcTemplate.queryForObject("SELECT stat_id FROM github_stats WHERE stat_date = '2010-10-10'", Long.clreplaced);
} catch (EmptyResultDataAccessException e) {
jdbcTemplate.update(new PreparedStatementCreator() {
String INSERT_SQL = "INSERT INTO github_stats (stat_date) VALUES ('2010-10-10')";
public PreparedStatement createPreparedStatement(Connection connection) throws SQLException {
PreparedStatement ps = connection.prepareStatement(INSERT_SQL, new String[] { "stat_id" });
return ps;
}
}, keyHolder);
statId = keyHolder.getKey().longValue();
}
replacedertThat(statId).isGreaterThan(0);
}
See More Examples