diff --git a/core/pom.xml b/core/pom.xml
index b86567b4..eefd2e0a 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -110,12 +110,15 @@
${spring-jdbc.version}
+
org.mockito
mockito-all
${mockito.version}
test
+
+
diff --git a/core/src/main/java/org/sql2o/converters/BigIntegerConverter.java b/core/src/main/java/org/sql2o/converters/BigIntegerConverter.java
new file mode 100644
index 00000000..e122a0cb
--- /dev/null
+++ b/core/src/main/java/org/sql2o/converters/BigIntegerConverter.java
@@ -0,0 +1,39 @@
+package org.sql2o.converters;
+
+import java.math.BigInteger;
+
+public class BigIntegerConverter extends NumberConverter {
+
+
+ public BigIntegerConverter() {
+ super(false);
+ }
+
+ @Override
+ protected BigInteger convertNumberValue(Number number) {
+ if(null == number){
+ return null;
+ }
+ else if (number instanceof BigInteger){
+ return (BigInteger)number;
+ }
+ else{
+ return BigInteger.valueOf(number.intValue());
+ }
+
+ }
+
+ @Override
+ protected BigInteger convertStringValue(String string) {
+ if(null != string) {
+ return BigInteger.valueOf(Integer.parseInt(string));
+ }else{
+ return null;
+ }
+ }
+
+ @Override
+ protected String getTypeDescription() {
+ return BigInteger.class.toString();
+ }
+}
diff --git a/core/src/main/java/org/sql2o/converters/Convert.java b/core/src/main/java/org/sql2o/converters/Convert.java
index 68bc51fc..755d8b65 100644
--- a/core/src/main/java/org/sql2o/converters/Convert.java
+++ b/core/src/main/java/org/sql2o/converters/Convert.java
@@ -11,6 +11,7 @@
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.math.BigDecimal;
+import java.math.BigInteger;
import java.util.HashMap;
import java.util.Map;
import java.util.ServiceLoader;
@@ -54,6 +55,7 @@ private static void fillDefaults(Map, Converter>> mapToFill) {
mapToFill.put(byte.class, new ByteConverter(true));
mapToFill.put(BigDecimal.class, new BigDecimalConverter());
+ mapToFill.put(BigInteger.class,new BigIntegerConverter());
mapToFill.put(String.class, new StringConverter());
diff --git a/core/src/test/java/org/sql2o/converters/BigIntegerConverterTest.java b/core/src/test/java/org/sql2o/converters/BigIntegerConverterTest.java
new file mode 100644
index 00000000..efce6da1
--- /dev/null
+++ b/core/src/test/java/org/sql2o/converters/BigIntegerConverterTest.java
@@ -0,0 +1,52 @@
+package org.sql2o.converters;
+
+
+import org.junit.Test;
+
+
+import java.math.BigInteger;
+
+import static org.hamcrest.core.Is.is;
+import static org.hamcrest.core.IsEqual.equalTo;
+import static org.hamcrest.core.IsNull.nullValue;
+import static org.junit.Assert.assertThat;
+
+public class BigIntegerConverterTest {
+
+ private BigIntegerConverter bigIntegerConverter = new BigIntegerConverter();
+
+ @Test
+ public void convertNumberValue(){
+ BigInteger bigInteger = bigIntegerConverter.convertNumberValue(1);
+ assertThat(bigInteger,equalTo(BigInteger.ONE));
+ }
+
+ @Test
+ public void convertBigIntegerValue(){
+ BigInteger bigInteger = bigIntegerConverter.convertNumberValue(BigInteger.ONE);
+ assertThat(bigInteger,equalTo(BigInteger.ONE));
+ }
+
+ @Test
+ public void convertStringValue(){
+ BigInteger bigInteger = bigIntegerConverter.convertStringValue("1");
+ assertThat(bigInteger,equalTo(BigInteger.ONE));
+ }
+
+ @Test
+ public void convertNullValue(){
+ BigInteger bigInteger;
+
+ bigInteger = bigIntegerConverter.convertNumberValue(null);
+ assertThat(bigInteger,is(nullValue()));
+
+ bigInteger = bigIntegerConverter.convertStringValue(null);
+ assertThat(bigInteger,is(nullValue()));
+
+ }
+
+ @Test
+ public void getTypeDescription(){
+ assertThat(bigIntegerConverter.getTypeDescription(),equalTo("class java.math.BigInteger"));
+ }
+}