Girişİsmi update olmasına rağmen Insert, Delete, Update için kullanılabilir.
update metodu - sql + args
İmzası
şöyle. Sonuç olarak kaç tane satırın etkilendiğini döner.
public int update(String sql) throws DataAccessException
public int update(String sql, Object... args) throws DataAccessException
public int update(String
sql, Object[] args, int
[] argTypes)
throws DataAccessException
1. args parametreleri teker teker veya Object[] şeklinde geçilebilir.
2. Sonuç olarak kaç tane satırın etkilendiğini belirten bir int döner
Örnek
String INSERT_USER_QUERY = "INSERT INTO USER(id,first_name,last_name,gender,age)
VALUES(?,?,?,?,?)";
String UPDATE_USER_QUERY = "UPDATE user SET first_name=?,last_name=?,gender=?,age=?
WHERE id=?";
String DELETE_USER_QUERY = "DELETE FROM user WHERE id=?";
@Override
public int save(User user) {
return jdbcTemplate.update(INSERT_USER_QUERY, new Object[] { user.getId(),
user.getFirstName(),
user.getLastName(), user.getGender(), user.getAge() });
}
@Override
public int update(User user) {
return jdbcTemplate.update(UPDATE_USER_QUERY, new Object[] { user.getFirstName(),
user.getLastName(),
user.getGender(), user.getAge(), user.getId() });
}
@Override
public int delete(int id) {
return jdbcTemplate.update(DELETE_USER_QUERY, new Object[] { id });
}
Örnek
Parametre kullanmak için şöyle
yaparız.
jdbctemplate.update(sql, arg1, arg2);
ÖrnekDizi kullanmak için şöyle
yaparızjdbctemplate.update(sql, new Object[]{arg1, arg2});
Kaç satırın etkilendiği sonucunu almak için şöyle
yaparız.
String insertQuery = "<db query for insert>";
Object[] args = new Object[]{Integer.valueOf(...), ...,...,...,null,null};
int result = jdbcTemplate.update(insertQuery, args);
Örnek - insertOracle'da sequence kullanmak için şöyle
yaparız.
String sql = "insert into Employee values (id_seq.nextval, ?, ?, ?)";
jdbcTemplate.update(sql, name, age, salary);
Örnek - insertŞöyle
yaparız.
jdbcTemplate.update("INSERT INTO Test (ID, NAME) VALUES (?, ?)",
new Object[]{101, "Dave"}
);
update metodu - sql + PreparedStatementCreatorÖrnekimport org.springframework.jdbc.support.GeneratedKeyHolder;
import org.springframework.jdbc.support.KeyHolder;
final String INSERT_SQL = "insert into my_test (name) values(?)";
final String name = "Rob";
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);
ÖrnekPreparedStatementCreator yerine lambda kullanılabilir. Şöyle
yaparızjdbcTemplate.update(connection -> {
PreparedStatement ps = connection.prepareStatement(
"insert into my (id , file, file_name ) values ( ? , ? , ? )",
new String[]{"id"});
ps.setInt(1, id);
ps.setString(2, base64EncodedFile);
ps.setString(3, fileName);
return ps;
});