我有一些代码,这个样本在这里(Spring 3.1) . 它工作得很好 .
但我想知道是否有更多的Spring-ish方式返回我刚插入的密钥(Oracle nextval) . 也许这是最好也是唯一的方法,但它似乎并不符合 Spring 天的精神(例如较少的冗长) .
我查看了SimpleJdbcTemplate,但从3.1开始不推荐使用
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import javax.sql.DataSource;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.PreparedStatementCreator;
import org.springframework.jdbc.support.GeneratedKeyHolder;
import org.springframework.jdbc.support.KeyHolder;
public class EmployeeDaoImpl implements EmployeeDao {
private DataSource dataSource;
private JdbcTemplate jdbcTemplate;
public void setDataSource(DataSource dataSource) {
this.dataSource = dataSource;
this.jdbcTemplate = new JdbcTemplate(this.dataSource);
}
public int insertEmployee() {
final String INSERT_SQL = "insert into trn_employee (first_name,last_name) values(?,?)";
KeyHolder keyHolder = new GeneratedKeyHolder();
jdbcTemplate.update(new PreparedStatementCreator() {
public PreparedStatement createPreparedStatement(
Connection connection) throws SQLException {
PreparedStatement ps = connection.prepareStatement(INSERT_SQL,
new String[] { "employee_id" });
ps.setString(1, "George");
ps.setString(2, "Harrison");
return ps;
}
}, keyHolder);
return keyHolder.getKey().intValue();
}
}