浏览代码

新增 getAs(Object, Object)

James 3 年之前
父节点
当前提交
f3bed91b4b
共有 2 个文件被更改,包括 76 次插入66 次删除
  1. 37 32
      src/main/java/com/jfinal/kit/Kv.java
  2. 39 34
      src/main/java/com/jfinal/kit/Okv.java

+ 37 - 32
src/main/java/com/jfinal/kit/Kv.java

@@ -23,124 +23,129 @@ import com.jfinal.json.Json;
 
 /**
  * Kv (Key Value)
- * 
+ *
  * Example:
  *    Kv para = Kv.by("id", 123);
  *    User user = user.findFirst(getSqlPara("find", para));
  */
 @SuppressWarnings({"rawtypes", "unchecked"})
 public class Kv extends HashMap {
-	
+
 	private static final long serialVersionUID = -808251639784763326L;
-	
+
 	public Kv() {
 	}
-	
+
 	public static Kv of(Object key, Object value) {
 		return new Kv().set(key, value);
 	}
-	
+
 	public static Kv by(Object key, Object value) {
 		return new Kv().set(key, value);
 	}
-	
+
 	public static Kv create() {
 		return new Kv();
 	}
-	
+
 	public Kv set(Object key, Object value) {
 		super.put(key, value);
 		return this;
 	}
-	
+
 	public Kv setIfNotBlank(Object key, String value) {
 		if (StrKit.notBlank(value)) {
 			set(key, value);
 		}
 		return this;
 	}
-	
+
 	public Kv setIfNotNull(Object key, Object value) {
 		if (value != null) {
 			set(key, value);
 		}
 		return this;
 	}
-	
+
 	public Kv set(Map map) {
 		super.putAll(map);
 		return this;
 	}
-	
+
 	public Kv set(Kv kv) {
 		super.putAll(kv);
 		return this;
 	}
-	
+
 	public Kv delete(Object key) {
 		super.remove(key);
 		return this;
 	}
-	
+
 	public <T> T getAs(Object key) {
 		return (T)get(key);
 	}
-	
+
+	public <T> T getAs(Object key, Object defaultValue) {
+		Object ret = get(key);
+		return (T) (ret != null ? ret : defaultValue);
+	}
+
 	public String getStr(Object key) {
 		Object s = get(key);
 		return s != null ? s.toString() : null;
 	}
-	
+
 	public Integer getInt(Object key) {
 		return TypeKit.toInt(get(key));
 	}
-	
+
 	public Long getLong(Object key) {
 		return TypeKit.toLong(get(key));
 	}
-	
+
 	public BigDecimal getBigDecimal(Object key) {
 		return TypeKit.toBigDecimal(get(key));
 	}
-	
+
 	public Double getDouble(Object key) {
 		return TypeKit.toDouble(get(key));
 	}
-	
+
 	public Float getFloat(Object key) {
 		return TypeKit.toFloat(get(key));
 	}
-	
+
 	public Number getNumber(Object key) {
 		return TypeKit.toNumber(get(key));
 	}
-	
+
 	public Boolean getBoolean(Object key) {
 		return TypeKit.toBoolean(get(key));
 	}
-	
+
 	public java.util.Date getDate(Object key) {
 		return TypeKit.toDate(get(key));
 	}
-	
+
 	public java.time.LocalDateTime getLocalDateTime(Object key) {
 		return TypeKit.toLocalDateTime(get(key));
 	}
-	
+
 	/**
 	 * key 存在,并且 value 不为 null
 	 */
 	public boolean notNull(Object key) {
 		return get(key) != null;
 	}
-	
+
 	/**
 	 * key 不存在,或者 key 存在但 value 为null
 	 */
 	public boolean isNull(Object key) {
 		return get(key) == null;
 	}
-	
+
 	/**
 	 * key 存在,并且 value 为 true,则返回 true
 	 */
@@ -148,7 +153,7 @@ public class Kv extends HashMap {
 		Object value = get(key);
 		return value != null && TypeKit.toBoolean(value);
 	}
-	
+
 	/**
 	 * key 存在,并且 value 为 false,则返回 true
 	 */
@@ -156,15 +161,15 @@ public class Kv extends HashMap {
 		Object value = get(key);
 		return value != null && !TypeKit.toBoolean(value);
 	}
-	
+
 	public String toJson() {
 		return Json.getJson().toJson(this);
 	}
-	
+
 	public boolean equals(Object kv) {
 		return kv instanceof Kv && super.equals(kv);
 	}
-	
+
 	public Kv keep(String... keys) {
 		if (keys != null && keys.length > 0) {
 			Kv newKv = Kv.create();
@@ -173,13 +178,13 @@ public class Kv extends HashMap {
 					newKv.put(k, get(k));
 				}
 			}
-			
+
 			clear();
 			putAll(newKv);
 		} else {
 			clear();
 		}
-		
+
 		return this;
 	}
 }

+ 39 - 34
src/main/java/com/jfinal/kit/Okv.java

@@ -22,128 +22,133 @@ import java.util.Map;
 import com.jfinal.json.Json;
 
 /**
- * Okv (Ordered Key Value) 
- * 
+ * Okv (Ordered Key Value)
+ *
  * Okv 与 Kv 的唯一区别在于 Okv 继承自 LinkedHashMap,而 Kv 继承自 HashMap
  * 所以对 Okv 中的数据进行迭代输出的次序与数据插入的先后次序一致
- * 
+ *
  * Example:
  *    Okv para = Okv.by("id", 123);
  *    User user = user.findFirst(getSqlPara("find", para));
  */
 @SuppressWarnings({"rawtypes", "unchecked"})
 public class Okv extends LinkedHashMap {
-	
+
 	private static final long serialVersionUID = -6517132544791494383L;
-	
+
 	public Okv() {
 	}
-	
+
 	public static Okv of(Object key, Object value) {
 		return new Okv().set(key, value);
 	}
-	
+
 	public static Okv by(Object key, Object value) {
 		return new Okv().set(key, value);
 	}
-	
+
 	public static Okv create() {
 		return new Okv();
 	}
-	
+
 	public Okv set(Object key, Object value) {
 		super.put(key, value);
 		return this;
 	}
-	
+
 	public Okv setIfNotBlank(Object key, String value) {
 		if (StrKit.notBlank(value)) {
 			set(key, value);
 		}
 		return this;
 	}
-	
+
 	public Okv setIfNotNull(Object key, Object value) {
 		if (value != null) {
 			set(key, value);
 		}
 		return this;
 	}
-	
+
 	public Okv set(Map map) {
 		super.putAll(map);
 		return this;
 	}
-	
+
 	public Okv set(Okv okv) {
 		super.putAll(okv);
 		return this;
 	}
-	
+
 	public Okv delete(Object key) {
 		super.remove(key);
 		return this;
 	}
-	
+
 	public <T> T getAs(Object key) {
 		return (T)get(key);
 	}
-	
+
+	public <T> T getAs(Object key, Object defaultValue) {
+		Object ret = get(key);
+		return (T) (ret != null ? ret : defaultValue);
+	}
+
 	public String getStr(Object key) {
 		Object s = get(key);
 		return s != null ? s.toString() : null;
 	}
-	
+
 	public Integer getInt(Object key) {
 		return TypeKit.toInt(get(key));
 	}
-	
+
 	public Long getLong(Object key) {
 		return TypeKit.toLong(get(key));
 	}
-	
+
 	public BigDecimal getBigDecimal(Object key) {
 		return TypeKit.toBigDecimal(get(key));
 	}
-	
+
 	public Double getDouble(Object key) {
 		return TypeKit.toDouble(get(key));
 	}
-	
+
 	public Float getFloat(Object key) {
 		return TypeKit.toFloat(get(key));
 	}
-	
+
 	public Number getNumber(Object key) {
 		return TypeKit.toNumber(get(key));
 	}
-	
+
 	public Boolean getBoolean(Object key) {
 		return TypeKit.toBoolean(get(key));
 	}
-	
+
 	public java.util.Date getDate(Object key) {
 		return TypeKit.toDate(get(key));
 	}
-	
+
 	public java.time.LocalDateTime getLocalDateTime(Object key) {
 		return TypeKit.toLocalDateTime(get(key));
 	}
-	
+
 	/**
 	 * key 存在,并且 value 不为 null
 	 */
 	public boolean notNull(Object key) {
 		return get(key) != null;
 	}
-	
+
 	/**
 	 * key 不存在,或者 key 存在但 value 为null
 	 */
 	public boolean isNull(Object key) {
 		return get(key) == null;
 	}
-	
+
 	/**
 	 * key 存在,并且 value 为 true,则返回 true
 	 */
@@ -151,7 +156,7 @@ public class Okv extends LinkedHashMap {
 		Object value = get(key);
 		return value != null && TypeKit.toBoolean(value);
 	}
-	
+
 	/**
 	 * key 存在,并且 value 为 false,则返回 true
 	 */
@@ -159,15 +164,15 @@ public class Okv extends LinkedHashMap {
 		Object value = get(key);
 		return value != null && !TypeKit.toBoolean(value);
 	}
-	
+
 	public String toJson() {
 		return Json.getJson().toJson(this);
 	}
-	
+
 	public boolean equals(Object okv) {
 		return okv instanceof Okv && super.equals(okv);
 	}
-	
+
 	public Okv keep(String... keys) {
 		if (keys != null && keys.length > 0) {
 			Okv newOkv = Okv.create();
@@ -176,13 +181,13 @@ public class Okv extends LinkedHashMap {
 					newOkv.put(k, get(k));
 				}
 			}
-			
+
 			clear();
 			putAll(newOkv);
 		} else {
 			clear();
 		}
-		
+
 		return this;
 	}
 }