add method

This commit is contained in:
Looly 2020-09-17 17:10:42 +08:00
parent 72a33201eb
commit a5f757679e
4 changed files with 41 additions and 7 deletions

View File

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

View File

@ -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)}的别名方法<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);
}

View File

@ -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;

View File

@ -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) {