Skip to content

Commit 398b492

Browse files
committed
Add ArrayTypeHandler and register it in the TypeHandlerRegistry. Should have done this months ago.
1 parent 9aaa4f4 commit 398b492

File tree

6 files changed

+20
-18
lines changed

6 files changed

+20
-18
lines changed

src/test/java/org/apache/ibatis/submitted/sptests/ArrayTypeHandler.java renamed to src/main/java/org/apache/ibatis/type/ArrayTypeHandler.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,32 @@
1-
package org.apache.ibatis.submitted.sptests;
1+
package org.apache.ibatis.type;
22

33
import java.sql.Array;
44
import java.sql.CallableStatement;
55
import java.sql.PreparedStatement;
66
import java.sql.ResultSet;
77
import java.sql.SQLException;
88

9-
import org.apache.ibatis.type.JdbcType;
10-
import org.apache.ibatis.type.TypeHandler;
11-
12-
public class ArrayTypeHandler implements TypeHandler {
9+
public class ArrayTypeHandler extends BaseTypeHandler {
1310

1411
public ArrayTypeHandler() {
1512
super();
1613
}
1714

18-
public void setParameter(PreparedStatement ps, int i, Object parameter,
19-
JdbcType jdbcType) throws SQLException {
15+
@Override
16+
public void setNonNullParameter(PreparedStatement ps, int i,
17+
Object parameter, JdbcType jdbcType) throws SQLException {
2018
ps.setArray(i, (Array) parameter);
2119
}
2220

23-
public Object getResult(ResultSet rs, String columnName)
21+
@Override
22+
public Object getNullableResult(ResultSet rs, String columnName)
2423
throws SQLException {
2524
Array array = rs.getArray(columnName);
2625
return array.getArray();
2726
}
2827

29-
public Object getResult(CallableStatement cs, int columnIndex)
28+
@Override
29+
public Object getNullableResult(CallableStatement cs, int columnIndex)
3030
throws SQLException {
3131
Array array = cs.getArray(columnIndex);
3232
return array.getArray();

src/main/java/org/apache/ibatis/type/TypeHandlerRegistry.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import org.apache.ibatis.io.ResolverUtil;
44

5-
import java.lang.annotation.Annotation;
65
import java.lang.reflect.Modifier;
76
import java.math.BigDecimal;
87
import java.math.BigInteger;
@@ -74,7 +73,10 @@ public TypeHandlerRegistry() {
7473
register(JdbcType.NVARCHAR, new NStringTypeHandler());
7574
register(JdbcType.NCHAR, new NStringTypeHandler());
7675
register(JdbcType.NCLOB, new NClobTypeHandler());
77-
76+
77+
register(Object.class, JdbcType.ARRAY, new ArrayTypeHandler());
78+
register(JdbcType.ARRAY, new ArrayTypeHandler());
79+
7880
register(BigInteger.class, new BigIntegerTypeHandler());
7981
register(JdbcType.BIGINT, new LongTypeHandler());
8082

src/test/java/com/ibatis/sqlmap/engine/builder/XmlSqlMapConfigParser.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ public XmlSqlMapConfigParser(Reader reader) {
3636
this.reader = reader;
3737
this.parser.addNodeletHandler(this);
3838
this.useStatementNamespaces = false;
39+
this.parser.setEntityResolver(new SqlMapEntityResolver());
3940
}
4041

4142
public XmlSqlMapConfigParser(Reader reader, Properties props) {

src/test/java/org/apache/ibatis/submitted/sptests/SPMapper.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -73,9 +73,9 @@ public interface SPMapper {
7373
List<Name> getNamesAnnotatedWithXMLResultMap(Map<String, Object> parms);
7474

7575
@Select({"{call sptest.arraytest(",
76-
"#{ids,mode=IN,jdbcType=ARRAY,typeHandler=org.apache.ibatis.submitted.sptests.ArrayTypeHandler},",
76+
"#{ids,mode=IN,jdbcType=ARRAY},",
7777
"#{requestedRows,jdbcType=INTEGER,mode=OUT},",
78-
"#{returnedIds,mode=OUT,jdbcType=ARRAY,typeHandler=org.apache.ibatis.submitted.sptests.ArrayTypeHandler})}"
78+
"#{returnedIds,mode=OUT,jdbcType=ARRAY})}"
7979
})
8080
@Results({
8181
@Result(column="ID", property="id"),
@@ -86,9 +86,9 @@ public interface SPMapper {
8686
List<Name> getNamesWithArrayAnnotated(Map<String, Object> parms);
8787

8888
@Select({"{call sptest.arraytest(",
89-
"#{ids,mode=IN,jdbcType=ARRAY,typeHandler=org.apache.ibatis.submitted.sptests.ArrayTypeHandler},",
89+
"#{ids,mode=IN,jdbcType=ARRAY},",
9090
"#{requestedRows,jdbcType=INTEGER,mode=OUT},",
91-
"#{returnedIds,mode=OUT,jdbcType=ARRAY,typeHandler=org.apache.ibatis.submitted.sptests.ArrayTypeHandler})}"
91+
"#{returnedIds,mode=OUT,jdbcType=ARRAY})}"
9292
})
9393
@ResultMap("nameResult")
9494
@Options(statementType=StatementType.CALLABLE)

src/test/java/org/apache/ibatis/submitted/sptests/SPMapper.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,9 +71,9 @@
7171
<select id="getNamesWithArray" parameterType="java.util.Map" statementType="CALLABLE"
7272
resultMap="nameResult">
7373
{call sptest.arraytest(
74-
#{ids,mode=IN,jdbcType=ARRAY,typeHandler=org.apache.ibatis.submitted.sptests.ArrayTypeHandler},
74+
#{ids,mode=IN,jdbcType=ARRAY},
7575
#{requestedRows,jdbcType=INTEGER,mode=OUT},
76-
#{returnedIds,mode=OUT,jdbcType=ARRAY,typeHandler=org.apache.ibatis.submitted.sptests.ArrayTypeHandler})}
76+
#{returnedIds,mode=OUT,jdbcType=ARRAY})}
7777
</select>
7878

7979
<select id="getNamesAndItems" statementType="CALLABLE"

src/test/java/org/apache/ibatis/submitted/sptests/SPTest.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
import org.apache.ibatis.session.SqlSessionFactory;
1919
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
2020
import org.junit.BeforeClass;
21-
import org.junit.Ignore;
2221
import org.junit.Test;
2322

2423
public class SPTest {

0 commit comments

Comments
 (0)