当JDBCTemplate需要返回参数时

使用场景: 当调用JDBCTemplate的提供的方法不能完成业务需求的时候 比如不能使用update后带返回值
可以实现createPreparedStatement的方式 使用原始的jdbc完成一个PreparedStatement的组建
代码如下:

PreparedStatementCreator creator = new PreparedStatementCreator() {
    
    
            @Override
            public PreparedStatement createPreparedStatement(Connection connection) throws SQLException {
    
    
                //使用原始的jdbc完成一个PreparedStatement的组建
                String sql = "insert into sys_user values(null,?,?,?,?)";
                PreparedStatement preparedStatement = connection.prepareStatement(sql, PreparedStatement.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 keyHolder = new GeneratedKeyHolder();
        jdbcTemplate.update(creator,keyHolder);
        //获取生成的主键
        long userId = keyHolder.getKey().longValue();

        return userId;

猜你喜欢

转载自blog.csdn.net/Fhakjfksakln/article/details/120404742