diff --git a/CHANGELOG.md b/CHANGELOG.md
index b8bb6f0d1..51b15c717 100644
--- a/CHANGELOG.md
+++ b/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)
diff --git a/hutool-core/src/main/java/cn/hutool/core/util/ObjectUtil.java b/hutool-core/src/main/java/cn/hutool/core/util/ObjectUtil.java
index 6b2a8261a..14100d28a 100644
--- a/hutool-core/src/main/java/cn/hutool/core/util/ObjectUtil.java
+++ b/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.*;
/**
@@ -22,14 +23,33 @@ import java.util.*;
*/
public class ObjectUtil {
+ /**
+ * 比较两个对象是否相等,此方法是 {@link #equal(Object, Object)}的别名方法。
+ * 相同的条件有两个,满足其一即可:
+ *
+ * - obj1 == null && obj2 == null
+ * - obj1.equals(obj2)
+ * - 如果是BigDecimal比较,0 == obj1.compareTo(obj2)
+ *
+ *
+ * @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);
+ }
+
/**
* 比较两个对象是否相等。
* 相同的条件有两个,满足其一即可:
*
* - obj1 == null && obj2 == null
* - obj1.equals(obj2)
+ * - 如果是BigDecimal比较,0 == obj1.compareTo(obj2)
*
- * 1. obj1 == null && 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);
}
diff --git a/hutool-db/src/main/java/cn/hutool/db/StatementUtil.java b/hutool-db/src/main/java/cn/hutool/db/StatementUtil.java
index 1f751481b..413e5a5ce 100644
--- a/hutool-db/src/main/java/cn/hutool/db/StatementUtil.java
+++ b/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 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;
diff --git a/hutool-db/src/main/java/cn/hutool/db/sql/SqlBuilder.java b/hutool-db/src/main/java/cn/hutool/db/sql/SqlBuilder.java
index f1775ddcf..433c62ab9 100644
--- a/hutool-db/src/main/java/cn/hutool/db/sql/SqlBuilder.java
+++ b/hutool-db/src/main/java/cn/hutool/db/sql/SqlBuilder.java
@@ -101,7 +101,7 @@ public class SqlBuilder implements Builder{
* 插入会忽略空的字段名及其对应值,但是对于有字段名对应值为{@code null}的情况不忽略
*
* @param entity 实体
- * @param dialectName 方言名
+ * @param dialectName 方言名,用于对特殊数据库特殊处理
* @return 自己
*/
public SqlBuilder insert(Entity entity, DialectName dialectName) {