ソースを参照

getInteger、getLong 等方法支持String转换

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

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

@@ -18,13 +18,9 @@ package com.jfinal.plugin.activerecord;
 
 import java.io.Serializable;
 import java.math.BigDecimal;
-import java.time.LocalDate;
 import java.time.LocalDateTime;
-import java.time.LocalTime;
-import java.time.temporal.Temporal;
 import java.util.Map;
 import java.util.Set;
-import com.jfinal.kit.TimeKit;
 import java.util.Map.Entry;
 
 /**
@@ -282,16 +278,18 @@ public class Record implements IRow<Record>, Serializable {
 	 * Get column of mysql type: int, integer, tinyint(n) n > 1, smallint, mediumint
 	 */
 	public Integer getInt(String column) {
-		Number n = getNumber(column);
-		return n != null ? n.intValue() : null;
+		// Number n = getNumber(column);
+		// return n != null ? n.intValue() : null;
+		return FieldValueKit.toInt(getColumns().get(column));
 	}
 	
 	/**
 	 * Get column of mysql type: bigint, unsigned int
 	 */
 	public Long getLong(String column) {
-		Number n = getNumber(column);
-		return n != null ? n.longValue() : null;
+		// Number n = getNumber(column);
+		// return n != null ? n.longValue() : null;
+		return FieldValueKit.toLong(getColumns().get(column));
 	}
 	
 	/**
@@ -305,40 +303,11 @@ public class Record implements IRow<Record>, Serializable {
 	 * Get column of mysql type: date, year
 	 */
 	public java.util.Date getDate(String column) {
-		Object ret = getColumns().get(column);
-		
-		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(getColumns().get(column));
 	}
 	
 	public LocalDateTime getLocalDateTime(String column) {
-		Object ret = getColumns().get(column);
-		
-		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(getColumns().get(column));
 	}
 	
 	/**
@@ -359,47 +328,45 @@ public class Record implements IRow<Record>, Serializable {
 	 * Get column of mysql type: real, double
 	 */
 	public Double getDouble(String column) {
-		Number n = getNumber(column);
-		return n != null ? n.doubleValue() : null;
+		// Number n = getNumber(column);
+		// return n != null ? n.doubleValue() : null;
+		return FieldValueKit.toDouble(getColumns().get(column));
 	}
 	
 	/**
 	 * Get column of mysql type: float
 	 */
 	public Float getFloat(String column) {
-		Number n = getNumber(column);
-		return n != null ? n.floatValue() : null;
+		// Number n = getNumber(column);
+		// return n != null ? n.floatValue() : null;
+		return FieldValueKit.toFloat(getColumns().get(column));
 	}
 	
 	public Short getShort(String column) {
-		Number n = getNumber(column);
-		return n != null ? n.shortValue() : null;
+		// Number n = getNumber(column);
+		// return n != null ? n.shortValue() : null;
+		return FieldValueKit.toShort(getColumns().get(column));
 	}
 	
 	public Byte getByte(String column) {
-		Number n = getNumber(column);
-		return n != null ? n.byteValue() : null;
+		// Number n = getNumber(column);
+		// return n != null ? n.byteValue() : null;
+		return FieldValueKit.toByte(getColumns().get(column));
 	}
 	
 	/**
 	 * Get column of mysql type: bit, tinyint(1)
 	 */
 	public Boolean getBoolean(String column) {
-		return (Boolean)getColumns().get(column);
+		// return (Boolean)getColumns().get(column);
+		return FieldValueKit.toBoolean(getColumns().get(column));
 	}
 	
 	/**
 	 * Get column of mysql type: decimal, numeric
 	 */
 	public BigDecimal getBigDecimal(String column) {
-		Object n = getColumns().get(column);
-		if (n instanceof BigDecimal) {
-			return (BigDecimal)n;
-		} else if (n != null) {
-			return new BigDecimal(n.toString());
-		} else {
-			return null;
-		}
+		return FieldValueKit.toBigDecimal(getColumns().get(column));
 	}
 	
 	/**
@@ -414,7 +381,8 @@ public class Record implements IRow<Record>, Serializable {
 	 * Get column of any type that extends from Number
 	 */
 	public Number getNumber(String column) {
-		return (Number)getColumns().get(column);
+		// return (Number)getColumns().get(column);
+		return FieldValueKit.toNumber(getColumns().get(column));
 	}
 	
 	public String toString() {