Skip to content

Commit cd9a221

Browse files
committed
Add missing standard JDBC types and SQL Server DATETIMEOFFSET type
1 parent 34f8fea commit cd9a221

File tree

2 files changed

+58
-2
lines changed

2 files changed

+58
-2
lines changed

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

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2009-2012 the original author or authors.
2+
* Copyright 2009-2015 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -57,7 +57,15 @@ public enum JdbcType {
5757
NVARCHAR(Types.NVARCHAR), // JDK6
5858
NCHAR(Types.NCHAR), // JDK6
5959
NCLOB(Types.NCLOB), // JDK6
60-
STRUCT(Types.STRUCT);
60+
STRUCT(Types.STRUCT),
61+
JAVA_OBJECT(Types.JAVA_OBJECT),
62+
DISTINCT(Types.DISTINCT),
63+
REF(Types.REF),
64+
DATALINK(Types.DATALINK),
65+
ROWID(Types.ROWID), // JDK6
66+
LONGNVARCHAR(Types.LONGNVARCHAR), // JDK6
67+
SQLXML(Types.SQLXML), // JDK6
68+
DATETIMEOFFSET(-155); // SQL Server 2008
6169

6270
public final int TYPE_CODE;
6371
private static Map<Integer,JdbcType> codeLookup = new HashMap<Integer,JdbcType>();
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
/*
2+
* Copyright 2015 the original author or authors.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
package org.apache.ibatis.type;
17+
18+
import static org.junit.Assert.assertEquals;
19+
20+
import java.sql.Types;
21+
22+
import org.junit.Test;
23+
24+
public class JdbcTypeTest {
25+
private static final String[] requiredStandardTypeNames = {
26+
"ARRAY", "BIGINT", "BINARY", "BIT", "BLOB", "BOOLEAN", "CHAR", "CLOB",
27+
"DATALINK", "DATE", "DECIMAL", "DISTINCT", "DOUBLE", "FLOAT", "INTEGER",
28+
"JAVA_OBJECT", "LONGNVARCHAR", "LONGVARBINARY", "LONGVARCHAR", "NCHAR",
29+
"NCLOB", "NULL", "NUMERIC","NVARCHAR", "OTHER", "REAL", "REF", "ROWID",
30+
"SMALLINT", "SQLXML", "STRUCT", "TIME", "TIMESTAMP", "TINYINT",
31+
"VARBINARY", "VARCHAR"
32+
};
33+
34+
@Test
35+
public void shouldHaveRequiredStandardConstants() throws Exception {
36+
for (String typeName : requiredStandardTypeNames) {
37+
int typeCode = Types.class.getField(typeName).getInt(null);
38+
JdbcType jdbcType = JdbcType.valueOf(typeName);
39+
assertEquals(typeCode, jdbcType.TYPE_CODE);
40+
}
41+
}
42+
43+
@Test
44+
public void shouldHaveDateTimeOffsetConstant() throws Exception {
45+
JdbcType jdbcType = JdbcType.valueOf("DATETIMEOFFSET");
46+
assertEquals(-155, jdbcType.TYPE_CODE);
47+
}
48+
}

0 commit comments

Comments
 (0)