事情是这样的,在1对N对N的表关系中,要用1方表自增生成的主键作为N方表的外键,因此插入1方表insert方法的返回值为主键值,这样可以用返回值插入N方表
代码如下
public int add(final Message message)
{
KeyHolder keyHolder = new GeneratedKeyHolder();
getJdbcTemplate().update(new PreparedStatementCreator(){
final String sql="insert into message (msgContent,sendTime) values(?,?)";
public PreparedStatement createPreparedStatement(java.sql.Connection conn) throws SQLException{
PreparedStatement ps = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
ps.setString(1, message.getMsgContent());
ps.setTimestamp(2, new java.sql.Timestamp(System.currentTimeMillis()));
return ps;
}
},
keyHolder);
return keyHolder.getKey().intValue();
}
注意导包不能导错:
import org.springframework.jdbc.support.GeneratedKeyHolder;
import org.springframework.jdbc.support.KeyHolder;
import org.springframework.jdbc.core.PreparedStatementCreator;
另外别忘了message 表的主键设置为自增