一、JDBCTemplate 插入记录并返回主键
-
代码
public long insertUser(SysUser user) { String sql = "insert into sys_user() values(NULL,?,?,?,?)"; PreparedStatementCreator preparedStatementCreator = new PreparedStatementCreator() { @Override public PreparedStatement createPreparedStatement(Connection connection) throws SQLException { // 使用原始的jdbc完成preparedStatement的组建 // RETURN_GENERATED_KEYS = 1 表示返回主键 PreparedStatement preparedStatement = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS); preparedStatement.setObject(1,user.getUsername()); preparedStatement.setObject(2,user.getEmail()); preparedStatement.setObject(3,user.getPassword()); preparedStatement.setObject(4,user.getPhoneNum()); return preparedStatement; } }; // 是 KeyHolder 接口的实现类 用来接受返回的组件 GeneratedKeyHolder generatedKeyHolder = new GeneratedKeyHolder(); // 执行 template.update(preparedStatementCreator,generatedKeyHolder); // 获取生成的主键 long userId = generatedKeyHolder.getKey().longValue(); return userId; }