Spring JdbcTemplate - Insert blob and return generated key

后端 未结 11 1844
猫巷女王i
猫巷女王i 2020-12-15 06:06

From the Spring JDBC documentation, I know how to insert a blob using JdbcTemplate

final File blobIn = new File(\"spring2004.jpg\");
final InputStream blobIs         


        
11条回答
  •  臣服心动
    2020-12-15 06:24

    In 2012, SimpleJdbcTemplate is deprecated. This is what I did:

    KeyHolder keyHolder = new GeneratedKeyHolder();
    
    List declaredParams = new ArrayList<>();
    
    declaredParams.add(new SqlParameter(Types.VARCHAR));
    declaredParams.add(new SqlParameter(Types.BLOB));
    declaredParams.add(new SqlParameter(Types.VARCHAR));
    declaredParams.add(new SqlParameter(Types.INTEGER));
    declaredParams.add(new SqlParameter(Types.INTEGER));
    
    PreparedStatementCreatorFactory pscFactory = 
        new PreparedStatementCreatorFactory(SQL_CREATE_IMAGE, declaredParams);
    
    pscFactory.setReturnGeneratedKeys(true);
    
    getJdbcTemplate().update(
        pscFactory.newPreparedStatementCreator(
            new Object[] {
                image.getName(), 
                image.getBytes(), 
                image.getMimeType(), 
                image.getHeight(),
                image.getWidth() 
            }), keyHolder);
    
    image.setId(keyHolder.getKey().intValue());
    

    The SQL looks like this:

    INSERT INTO image (name, image_bytes, mime_type, height, width) VALUES (?, ?, ?, ?, ?)
    

提交回复
热议问题