代码工具类

2021/12/21 入职须知

# 代码工具类说明

开发人员需熟练掌握常用的开发工具类,如判空,比较,转化,去重等。若非特殊情况,禁止自定义工具类。以便代码统一管理。以下介绍开发过程中常用到的类库

# 【重点】ToolUtil

ToolUtil作为开发过程中最常见的工具类,里面包含参数判空,去重,过滤等方法

1.isNotEmpty(Object obj) 对象非空
    示例:ToolUtil.isNotEmpty(object)->true为非空
    
2.isEmpty(Object obj) 对象为空
    示例:ToolUtil.isEmpty(object)->true为空
    
3.streamToSingleByCollection(List<? extends T> list,Function<? super T, ? extends K> fieldName) strem的工具类 (根据某个字段转成集合:K)
    示例:List<Long> uesrIds = ToolUtil.streamToSingleByCollection(list,SysAccountRole::getUserId);

4.streamListToMap(List<T> list, Function<T, K> fieldName) list 唯一id 与当前对象关系转换 map
    示例:Map<String,QuotaDTO> quotaMap = ToolUtil.streamListToMap(quotaList, QuotaDTO::getBizMark);

5.streamToSort(List<T> list, Function<T, U> fieldName) strem的工具类 (根据某个字段排序:U);默认正序
    示例:ToolUtil.streamToSort(list,       SysPermissionTreeDTO::getSortNo);

6.toStr(Object obj) object转string
    示例:
    
7.toLong(Object value) object转Long
    示例:
    
8.toInteger(Object value) object转Integer
    示例:
    
9.isNum(Object obj) 是否为数字
    示例:ToolUtil.isNum(virtualAccountDTO.getPayPassword())
    
10.getRandomNum() 随机获得6位数字
    示例:
    
11.streamToSingleByCollectionDistinct(List<T> list,Function<? super T, ? extends R> function) 将集合转为独立数据集合(同第二列)
    示例:List<Long> procDefIds = ToolUtil.streamToSingleByCollectionDistinct(rows, BpmHiProcinstDTO::getBytearrayId);
    
12.equals(Object obj1, Object obj2)比较
    示例:ToolUtil.equals(deleteCount, checkCount)
    
13.listRelationList(List<? extends T> list, List<? extends D> list2,Function<? super T, ? extends R> fieldName, Function<? super D, ? extends R> fieldName2,EachItem<T, D> eachItem) 2个集合关联字段处理
    示例:ToolUtil.listRelationList(attachList, biddingList, BiddingAttachDTO::getBiddingId, BiddingDTO::getBiddingId, (biddingAttach, bidding) -> {     biddingAttach.setOpenState(bidding.getOpenState()); });->判断两个集合再某个字段相同的情况下,做处理
    
14.listToArray(List<?> list, String fieldName)  list 转换 数组
    示例:Long[] pointUserIds = ToolUtil.listToArray(ToolUtil.listToArray(list, SchedulelistDTO::getPointUserId), Long.class);

15. arrayToList(T[] t) array 转换 list
    示例:List<Object> arrayToList = ToolUtil.arrayToList((Object[]) o);

16. isAllEmpty(Object... os)  对象组中是否全是 Empty
    示例:ToolUtil.isAllEmpty(leavewordsAnswerDTO.getCustId(), leavewordsAnswerDTO.getForCustId())
 
17. isOneEmpty(Object... os)  对象组中是否有一个是 Empty
    示例:ToolUtil.isOneEmpty(schedulelistDTO,schedulelistDTO.getId())
    
18. defaultIfNull(final T object, final T defaultValue)  如果传递的对象是 null,则返回默认值
    示例:ToolUtil.defaultIfNull(receiptPlanDTO.getWriteOffAmount(), 0D);
  

# 【重点】BeanCopyUtils

BeanCopyUtils作为开发过程中类型转换,对象或集合等

1.listTransfer(List<?> list, Class<T> t) List 泛型 转换
    示例:常用于查询对象model集合转化为对象DTO集合:List<AdvertPlaceDTO> advertPlaceList = BeanCopyUtils.listTransfer(list, AdvertPlaceDTO.class);
    
2.object2Object(Object object, Class<T> clazz) copy属性值 含父类属性值
    示例:常用于操作对象DTO转化为对象model:AdvertMaterial addAdvertMaterial = BeanCopyUtils.object2Object(advertMaterialDTO, AdvertMaterial.class);

3.transferValueToMap(Object object)  对象转Map
    示例:Map<String, Object> paramMap = BeanCopyUtils.transferValueToMap(monthlyTargetStoresDTO);

# DateKit

DateKit作为开发过程中日期处理工具类

方法 说明 示例
addDays(int amount) 返回Date对象 基于当天日期添加若干天
getYear() 获取YYYY格式
format(Date date, String pattern) 格式化日期
DateKit.getDaySub(Date beginDateStr, Date endDateStr) 时间相减得到天数
其他不一一列举

# ArithUtils

ArithUtils作为开发过程中运算处理工具类

方法 说明 示例
add(Number v1, Number v2) 提供精确的加法运算。
sub(Number v1, Number v2) 提供精确的减法运算。
mul(Number v1, Number v2) 提供精确的乘法运算。
div(Number v1, Number v2) 提供(相对)精确的除法运算,当发生除不尽的情况时,精确到 小数点以后 10 位,以后的数字四舍五入。