private MoneyPO queryById(int id){ return jdbcTemplate.queryForObject( "select id, `name`, money, is_deleted as isDeleted, unix_timestamp(create_at) as " + "created, unix_timestamp(update_at) as updated from money where id=?", new BeanPropertyRowMapper<>(MoneyPO.class), id); }
a. 纯sql更新
这个属于最基本的方式了,前面几篇博文中大量使用了,传入一条完整的sql,执行即可
1 2 3 4 5 6
int id = 10;
// 最基本的sql更新 String sql = "update money set money=money + 999 where id =" + id; int ans = jdbcTemplate.update(sql); System.out.println("basic update: " + ans + " | db: " + queryById(id));
b. 占位sql
问好占位,实际内容通过参数传递方式
1 2 3 4
// 占位方式 sql = "update money set money=money + ? where id = ?"; ans = jdbcTemplate.update(sql, 888, id); System.out.println("placeholder update: " + ans + " | db: " + queryById(id));
private List<MoneyPO> queryByIds(List<Integer> ids){ StringBuilder strIds = new StringBuilder(); for (Integer id : ids) { strIds.append(id).append(","); } return jdbcTemplate.query("select id, `name`, money, is_deleted as isDeleted, unix_timestamp(create_at) as " + "created, unix_timestamp(update_at) as updated from money where id in (" + strIds.substring(0, strIds.length() - 1) + ")", new BeanPropertyRowMapper<>(MoneyPO.class)); }
a. 纯sql更新
1 2 3 4 5 6
// 批量修改, // 执行多条sql的场景 int[] ans = jdbcTemplate .batchUpdate("update money set money=1300 where id =10", "update money set money=1300 where id = 11"); System.out.println( "batch update by sql ans: " + Arrays.asList(ans) + " | db: " + queryByIds(Arrays.asList(10, 11)));
b. 占位sql
1 2 3 4 5
// 占位替换方式 ans = jdbcTemplate.batchUpdate("update money set money=money + ? where id = ?", Arrays.asList(new Object[]{99, 10}, new Object[]{99, 11})); System.out.println("batch update by placeHolder ans: " + Arrays.asList(ans) + " | db: " + queryByIds(Arrays.asList(10, 11)));
c. statement
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
// 通过 statement ans = jdbcTemplate .batchUpdate("update money set money=money + ? where id = ?", new BatchPreparedStatementSetter() { @Override publicvoidsetValues(PreparedStatement preparedStatement, int i)throws SQLException { preparedStatement.setInt(1, 99); preparedStatement.setInt(2, i + 10); }
Be the first person to leave a comment!