1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package com.ibatis.sqlmap.engine.type;
17
18 import com.ibatis.sqlmap.client.extensions.ParameterSetter;
19 import com.ibatis.sqlmap.client.extensions.ResultGetter;
20 import com.ibatis.sqlmap.client.extensions.TypeHandlerCallback;
21
22 import java.io.ByteArrayInputStream;
23 import java.sql.Blob;
24 import java.sql.SQLException;
25 import java.sql.Types;
26
27
28
29
30 public class BlobTypeHandlerCallback implements TypeHandlerCallback {
31
32 @Override
33 public Object getResult(ResultGetter getter) throws SQLException {
34 Blob blob = getter.getBlob();
35 byte[] returnValue;
36 if (!getter.wasNull()) {
37 returnValue = blob.getBytes(1, (int) blob.length());
38 } else {
39 returnValue = null;
40 }
41 return returnValue;
42 }
43
44 @Override
45 public void setParameter(ParameterSetter setter, Object parameter) throws SQLException {
46 if (null != parameter) {
47 byte[] bytes = (byte[]) parameter;
48 ByteArrayInputStream bis = new ByteArrayInputStream(bytes);
49 setter.setBinaryStream(bis, bytes.length);
50 } else {
51 setter.setNull(Types.BLOB);
52 }
53 }
54
55 @Override
56 public Object valueOf(String s) {
57 return s;
58 }
59
60 }