James 8 年 前
コミット
bab8b8e357

+ 18 - 2
src/main/java/com/jfinal/core/converter/Converters.java

@@ -36,11 +36,27 @@ public class Converters {
 	public static class IntegerConverter implements IConverter<Integer> {
 	public static class IntegerConverter implements IConverter<Integer> {
 		// mysql type: int, integer, tinyint(n) n > 1, smallint, mediumint
 		// mysql type: int, integer, tinyint(n) n > 1, smallint, mediumint
 		@Override
 		@Override
-		public Integer convert(String s)  {
+		public Integer convert(String s) {
 			return Integer.parseInt(s);
 			return Integer.parseInt(s);
 		}
 		}
 	}
 	}
 	
 	
+	// 支持需要保持 short 而非转成 int 的场景
+	public static class ShortConverter implements IConverter<Short> {
+		@Override
+		public Short convert(String s) {
+			return Short.parseShort(s);
+		}
+	}
+	
+	// 支持需要保持 byte 而非转成 int 的场景
+	public static class ByteConverter implements IConverter<Byte> {
+		@Override
+		public Byte convert(String s) {
+			return Byte.parseByte(s);
+		}
+	}
+	
 	public static class LongConverter implements IConverter<Long> {
 	public static class LongConverter implements IConverter<Long> {
 		// mysql type: bigint
 		// mysql type: bigint
 		@Override
 		@Override
@@ -65,7 +81,7 @@ public class Converters {
 		}
 		}
 	}
 	}
 	
 	
-	public static class ByteConverter implements IConverter<byte[]> {
+	public static class ByteArrayConverter implements IConverter<byte[]> {
 		// mysql type: binary, varbinary, tinyblob, blob, mediumblob, longblob. I have not finished the test.
 		// mysql type: binary, varbinary, tinyblob, blob, mediumblob, longblob. I have not finished the test.
 		@Override
 		@Override
 		public byte[] convert(String s) {
 		public byte[] convert(String s) {

+ 8 - 1
src/main/java/com/jfinal/core/converter/TypeConverter.java

@@ -24,12 +24,14 @@ import com.jfinal.core.converter.Converters.BigDecimalConverter;
 import com.jfinal.core.converter.Converters.BigIntegerConverter;
 import com.jfinal.core.converter.Converters.BigIntegerConverter;
 import com.jfinal.core.converter.Converters.BooleanConverter;
 import com.jfinal.core.converter.Converters.BooleanConverter;
 import com.jfinal.core.converter.Converters.ByteConverter;
 import com.jfinal.core.converter.Converters.ByteConverter;
+import com.jfinal.core.converter.Converters.ByteArrayConverter;
 import com.jfinal.core.converter.Converters.DateConverter;
 import com.jfinal.core.converter.Converters.DateConverter;
 import com.jfinal.core.converter.Converters.DoubleConverter;
 import com.jfinal.core.converter.Converters.DoubleConverter;
 import com.jfinal.core.converter.Converters.FloatConverter;
 import com.jfinal.core.converter.Converters.FloatConverter;
 import com.jfinal.core.converter.Converters.IntegerConverter;
 import com.jfinal.core.converter.Converters.IntegerConverter;
 import com.jfinal.core.converter.Converters.LongConverter;
 import com.jfinal.core.converter.Converters.LongConverter;
 import com.jfinal.core.converter.Converters.SqlDateConverter;
 import com.jfinal.core.converter.Converters.SqlDateConverter;
+import com.jfinal.core.converter.Converters.ShortConverter;
 import com.jfinal.core.converter.Converters.TimeConverter;
 import com.jfinal.core.converter.Converters.TimeConverter;
 import com.jfinal.core.converter.Converters.TimestampConverter;
 import com.jfinal.core.converter.Converters.TimestampConverter;
 
 
@@ -80,7 +82,12 @@ public class TypeConverter {
 		regist(java.sql.Timestamp.class, new TimestampConverter());
 		regist(java.sql.Timestamp.class, new TimestampConverter());
 		regist(java.math.BigDecimal.class, new BigDecimalConverter());
 		regist(java.math.BigDecimal.class, new BigDecimalConverter());
 		regist(java.math.BigInteger.class, new BigIntegerConverter());
 		regist(java.math.BigInteger.class, new BigIntegerConverter());
-		regist(byte[].class, new ByteConverter());
+		regist(byte[].class, new ByteArrayConverter());
+		
+		regist(Short.class, new ShortConverter());
+		regist(short.class, new ShortConverter());
+		regist(Byte.class, new ByteConverter());
+		regist(byte.class, new ByteConverter());
 	}
 	}
 	
 	
 	public static TypeConverter me() {
 	public static TypeConverter me() {

+ 5 - 0
src/main/java/com/jfinal/plugin/activerecord/JavaType.java

@@ -70,6 +70,11 @@ public class JavaType {
 		// binary, varbinary, tinyblob, blob, mediumblob, longblob
 		// binary, varbinary, tinyblob, blob, mediumblob, longblob
 		// qjd project: print_info.content varbinary(61800);
 		// qjd project: print_info.content varbinary(61800);
 		put("[B", byte[].class);
 		put("[B", byte[].class);
+		
+		// 支持需要保持 short 与 byte 而非转成 int 的场景
+		// 目前作用于Controller.getModel()/getBean()
+		put("java.lang.Short", java.lang.Short.class);
+		put("java.lang.Byte", java.lang.Byte.class);
 	}};
 	}};
 	
 	
 	public Class<?> getType(String typeString) {
 	public Class<?> getType(String typeString) {