事情是这样的,在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 表的主键设置为自增
本文介绍了如何在数据库的1对N表关系中,利用1方表的自增主键作为N方表的外键。通过使用Java的JdbcTemplate和PreparedStatementCreator实现插入操作,并获取返回的自增主键用于后续操作。
469

被折叠的 条评论
为什么被折叠?



