Spring的Jdbctemplate怎么获得插入数据的主键值?

来源:百度知道 编辑:UC知道 时间:2024/05/18 15:24:09
普通的jdbc是这样的:
conn = dataSource.getConnection();
//id是主键,用序列生成
String sql = "insert into member(id,username,password,email,birth)" +" values (member_seq.nextval,?,?,?,?)";
//返回id的值
ps = conn.prepareStatement(sql,new String[]{"id"});
ps.setString(1, member.getUsername());
ps.setString(2, member.getPassword());
ps.setString(3, member.getEmail());
java.sql.Date sqlDate = new java.sql.Date(member.getBirthday().getTime());
ps.setDate(4, sqlDate);
int r = ps.executeUpdate();
rs = ps.getGeneratedKeys();
while(rs.next()) {
//获得主键生成的值
int id = rs.getInt(1);
System.out.println("ID: " + id);
member.setId(id);
}

我现在要用jdbctemplate实现以上的功能,怎么实现啊?
this.getJdbcTemplate().update(sql,
new Object[]{member.getUsername(),member.getPassword(),mem

Spring的JdbcTemplate插入操作返回主键ID的方法
public Long insertAndGetKey(final String sql, final SmsBean smsbean) {
KeyHolder keyHolder = new GeneratedKeyHolder();
jdbcTemplate.update(new PreparedStatementCreator() {
public PreparedStatement createPreparedStatement(Connection connection) throws SQLException {

//String sql_sms = "insert into sms(title,content,date_s,form,sffs,by1,by2,by3) values (?,?,'"+dates+"',?,?,?,?,?)";
PreparedStatement ps = connection.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);
ps.setString(1, smsbean.getTitle());
ps.setString(2, smsbean.getContent());
ps.setString(3, smsbean.getForm());
ps.setString(4, smsbean.getSffs());
/*
* by1 存放的是 草稿主人的ID
* 当消息为发送。清楚by1的ID
*/