Browse Source

add method

Looly 5 years ago
parent
commit
a5f757679e

+ 1 - 0
CHANGELOG.md

@@ -18,6 +18,7 @@
 * 【core   】     增加Interner和InternUtil(issue#I1TU1Y@Gitee)
 * 【core   】     增加Calculator(issue#1090@Github)
 * 【core   】     IdcardUtil增加getIdcardInfo方法(issue#1092@Github)
+* 【core   】     改进ObjectUtil.equal,支持BigDecimal判断
 
 ### Bug修复
 * 【core   】     修复Dict.of错误(issue#I1UUO5@Gitee)

+ 24 - 2
hutool-core/src/main/java/cn/hutool/core/util/ObjectUtil.java

@@ -13,6 +13,7 @@ import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
 import java.io.Serializable;
 import java.lang.reflect.Array;
+import java.math.BigDecimal;
 import java.util.*;
 
 /**
@@ -23,13 +24,32 @@ import java.util.*;
 public class ObjectUtil {
 
 	/**
+	 * 比较两个对象是否相等,此方法是 {@link #equal(Object, Object)}的别名方法。<br>
+	 * 相同的条件有两个,满足其一即可:<br>
+	 * <ol>
+	 * <li>obj1 == null &amp;&amp; obj2 == null</li>
+	 * <li>obj1.equals(obj2)</li>
+	 * <li>如果是BigDecimal比较,0 == obj1.compareTo(obj2)</li>
+	 * </ol>
+	 *
+	 * @param obj1 对象1
+	 * @param obj2 对象2
+	 * @return 是否相等
+	 * @see #equal(Object, Object)
+	 * @since 5.4.3
+	 */
+	public static boolean equals(Object obj1, Object obj2) {
+		return equal(obj1, obj2);
+	}
+
+	/**
 	 * 比较两个对象是否相等。<br>
 	 * 相同的条件有两个,满足其一即可:<br>
 	 * <ol>
 	 * <li>obj1 == null &amp;&amp; obj2 == null</li>
 	 * <li>obj1.equals(obj2)</li>
+	 * <li>如果是BigDecimal比较,0 == obj1.compareTo(obj2)</li>
 	 * </ol>
-	 * 1. obj1 == null &amp;&amp; obj2 == null 2. obj1.equals(obj2)
 	 *
 	 * @param obj1 对象1
 	 * @param obj2 对象2
@@ -37,7 +57,9 @@ public class ObjectUtil {
 	 * @see Objects#equals(Object, Object)
 	 */
 	public static boolean equal(Object obj1, Object obj2) {
-		// return (obj1 != null) ? (obj1.equals(obj2)) : (obj2 == null);
+		if(obj1 instanceof BigDecimal && obj2 instanceof BigDecimal){
+			return NumberUtil.equals((BigDecimal)obj1, (BigDecimal)obj2);
+		}
 		return Objects.equals(obj1, obj2);
 	}
 

+ 15 - 4
hutool-db/src/main/java/cn/hutool/db/StatementUtil.java

@@ -1,7 +1,7 @@
 package cn.hutool.db;
 
 import cn.hutool.core.collection.ArrayIter;
-import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.convert.Convert;
 import cn.hutool.core.lang.Assert;
 import cn.hutool.core.util.ArrayUtil;
@@ -13,8 +13,19 @@ import cn.hutool.db.sql.SqlUtil;
 
 import java.math.BigDecimal;
 import java.math.BigInteger;
-import java.sql.*;
-import java.util.*;
+import java.sql.CallableStatement;
+import java.sql.Connection;
+import java.sql.ParameterMetaData;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.sql.Types;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
 /**
  * Statement和PreparedStatement工具类
@@ -191,7 +202,7 @@ public class StatementUtil {
 		//null参数的类型缓存,避免循环中重复获取类型
 		final Map<Integer, Integer> nullTypeMap = new HashMap<>();
 		for (Entity entity : entities) {
-			fillParams(ps, CollectionUtil.valuesOfKeys(entity, fields), nullTypeMap);
+			fillParams(ps, CollUtil.valuesOfKeys(entity, fields), nullTypeMap);
 			ps.addBatch();
 		}
 		return ps;

+ 1 - 1
hutool-db/src/main/java/cn/hutool/db/sql/SqlBuilder.java

@@ -101,7 +101,7 @@ public class SqlBuilder implements Builder<String>{
 	 * 插入会忽略空的字段名及其对应值,但是对于有字段名对应值为{@code null}的情况不忽略
 	 * 
 	 * @param entity 实体
-	 * @param dialectName 方言名
+	 * @param dialectName 方言名,用于对特殊数据库特殊处理
 	 * @return 自己
 	 */
 	public SqlBuilder insert(Entity entity, DialectName dialectName) {