ソースを参照

getInteger、getLong 等方法支持String转换

James 3 年 前
コミット
c939f5a3bb
1 ファイル変更25 行追加57 行削除
  1. 25 57
      src/main/java/com/jfinal/plugin/activerecord/Model.java

+ 25 - 57
src/main/java/com/jfinal/plugin/activerecord/Model.java

@@ -22,10 +22,7 @@ import java.sql.Connection;
 import java.sql.PreparedStatement;
 import java.sql.ResultSet;
 import java.sql.Statement;
-import java.time.LocalDate;
 import java.time.LocalDateTime;
-import java.time.LocalTime;
-import java.time.temporal.Temporal;
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
@@ -33,7 +30,6 @@ import java.util.Map;
 import java.util.Set;
 import java.util.Map.Entry;
 import java.util.function.Function;
-import com.jfinal.kit.TimeKit;
 import com.jfinal.plugin.activerecord.cache.ICache;
 import static com.jfinal.plugin.activerecord.DbKit.NULL_PARA_ARRAY;
 
@@ -347,16 +343,18 @@ public abstract class Model<M extends Model> implements IRow<M>, Serializable {
 	 * Get attribute of mysql type: int, integer, tinyint(n) n > 1, smallint, mediumint
 	 */
 	public Integer getInt(String attr) {
-		Number n = (Number)attrs.get(attr);
-		return n != null ? n.intValue() : null;
+		// Number n = (Number)attrs.get(attr);
+		// return n != null ? n.intValue() : null;
+		return FieldValueKit.toInt(attrs.get(attr));
 	}
 	
 	/**
 	 * Get attribute of mysql type: bigint, unsign int
 	 */
 	public Long getLong(String attr) {
-		Number n = (Number)attrs.get(attr);
-		return n != null ? n.longValue() : null;
+		// Number n = (Number)attrs.get(attr);
+		// return n != null ? n.longValue() : null;
+		return FieldValueKit.toLong(attrs.get(attr));
 	}
 	
 	/**
@@ -370,40 +368,11 @@ public abstract class Model<M extends Model> implements IRow<M>, Serializable {
 	 * Get attribute of mysql type: date, year
 	 */
 	public java.util.Date getDate(String attr) {
-		Object ret = attrs.get(attr);
-		
-		if (ret instanceof Temporal) {
-			if (ret instanceof LocalDateTime) {
-				return TimeKit.toDate((LocalDateTime)ret);
-			}
-			if (ret instanceof LocalDate) {
-				return TimeKit.toDate((LocalDate)ret);
-			}
-			if (ret instanceof LocalTime) {
-				return TimeKit.toDate((LocalTime)ret);
-			}
-		}
-		
-		return (java.util.Date)ret;
+		return FieldValueKit.toDate(attrs.get(attr));
 	}
 	
 	public LocalDateTime getLocalDateTime(String attr) {
-		Object ret = attrs.get(attr);
-		
-		if (ret instanceof LocalDateTime) {
-			return (LocalDateTime)ret;
-		}
-		if (ret instanceof LocalDate) {
-			return ((LocalDate)ret).atStartOfDay();
-		}
-		if (ret instanceof LocalTime) {
-			return LocalDateTime.of(LocalDate.now(), (LocalTime)ret);
-		}
-		if (ret instanceof java.util.Date) {
-			return TimeKit.toLocalDateTime((java.util.Date)ret);
-		}
-		
-		return (LocalDateTime)ret;
+		return FieldValueKit.toLocalDateTime(attrs.get(attr));
 	}
 	
 	/**
@@ -424,47 +393,45 @@ public abstract class Model<M extends Model> implements IRow<M>, Serializable {
 	 * Get attribute of mysql type: real, double
 	 */
 	public Double getDouble(String attr) {
-		Number n = (Number)attrs.get(attr);
-		return n != null ? n.doubleValue() : null;
+		// Number n = (Number)attrs.get(attr);
+		// return n != null ? n.doubleValue() : null;
+		return FieldValueKit.toDouble(attrs.get(attr));
 	}
 	
 	/**
 	 * Get attribute of mysql type: float
 	 */
 	public Float getFloat(String attr) {
-		Number n = (Number)attrs.get(attr);
-		return n != null ? n.floatValue() : null;
+		// Number n = (Number)attrs.get(attr);
+		// return n != null ? n.floatValue() : null;
+		return FieldValueKit.toFloat(attrs.get(attr));
 	}
 	
 	public Short getShort(String attr) {
-		Number n = (Number)attrs.get(attr);
-		return n != null ? n.shortValue() : null;
+		// Number n = (Number)attrs.get(attr);
+		// return n != null ? n.shortValue() : null;
+		return FieldValueKit.toShort(attrs.get(attr));
 	}
 	
 	public Byte getByte(String attr) {
-		Number n = (Number)attrs.get(attr);
-		return n != null ? n.byteValue() : null;
+		// Number n = (Number)attrs.get(attr);
+		// return n != null ? n.byteValue() : null;
+		return FieldValueKit.toByte(attrs.get(attr));
 	}
 	
 	/**
 	 * Get attribute of mysql type: bit, tinyint(1)
 	 */
 	public Boolean getBoolean(String attr) {
-		return (Boolean)attrs.get(attr);
+		// return (Boolean)attrs.get(attr);
+		return FieldValueKit.toBoolean(attrs.get(attr));
 	}
 	
 	/**
 	 * Get attribute of mysql type: decimal, numeric
 	 */
 	public BigDecimal getBigDecimal(String attr) {
-		Object n = attrs.get(attr);
-		if (n instanceof BigDecimal) {
-			return (BigDecimal)n;
-		} else if (n != null) {
-			return new BigDecimal(n.toString());
-		} else {
-			return null;
-		}
+		return FieldValueKit.toBigDecimal(attrs.get(attr));
 	}
 	
 	/**
@@ -478,7 +445,8 @@ public abstract class Model<M extends Model> implements IRow<M>, Serializable {
 	 * Get attribute of any type that extends from Number
 	 */
 	public Number getNumber(String attr) {
-		return (Number)attrs.get(attr);
+		// return (Number)attrs.get(attr);
+		return FieldValueKit.toNumber(attrs.get(attr));
 	}
 	
 	/**