1   
2   
3   
4   
5   
6   
7   
8   
9   
10  
11  
12  
13  
14  
15  
16  package org.apache.ibatis.type;
17  
18  import java.io.ByteArrayInputStream;
19  import java.sql.Blob;
20  import java.sql.CallableStatement;
21  import java.sql.PreparedStatement;
22  import java.sql.ResultSet;
23  import java.sql.SQLException;
24  
25  
26  
27  
28  public class BlobTypeHandler extends BaseTypeHandler<byte[]> {
29  
30    @Override
31    public void setNonNullParameter(PreparedStatement ps, int i, byte[] parameter, JdbcType jdbcType)
32        throws SQLException {
33      ByteArrayInputStream bis = new ByteArrayInputStream(parameter);
34      ps.setBinaryStream(i, bis, parameter.length);
35    }
36  
37    @Override
38    public byte[] getNullableResult(ResultSet rs, String columnName)
39        throws SQLException {
40      Blob blob = rs.getBlob(columnName);
41      byte[] returnValue = null;
42      if (null != blob) {
43        returnValue = blob.getBytes(1, (int) blob.length());
44      }
45      return returnValue;
46    }
47  
48    @Override
49    public byte[] getNullableResult(ResultSet rs, int columnIndex)
50        throws SQLException {
51      Blob blob = rs.getBlob(columnIndex);
52      byte[] returnValue = null;
53      if (null != blob) {
54        returnValue = blob.getBytes(1, (int) blob.length());
55      }
56      return returnValue;
57    }
58  
59    @Override
60    public byte[] getNullableResult(CallableStatement cs, int columnIndex)
61        throws SQLException {
62      Blob blob = cs.getBlob(columnIndex);
63      byte[] returnValue = null;
64      if (null != blob) {
65        returnValue = blob.getBytes(1, (int) blob.length());
66      }
67      return returnValue;
68    }
69  }