Spring的JdbcTemplate返回表自增主键值

事情是这样的,在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 表的主键设置为自增

你可能感兴趣的:(Spring的JdbcTemplate返回表自增主键值)