前言
我们在日常的开发中会使用到很多工具类,比如最常用的Http请求的,或者日期工具类,处理时间差或者对日期进行特殊处理的,还有就是图片上传类的,比如阿里云或者腾讯云得SSO图片上传,以及Excel文件的导入导出。那这些工具类基本上都是跟着项目的,就是每个项目都写各自的工具类,如果分工明确细化到小组那重复代码就多了,那把工具类集成成一个项目类呢,由一个人去维护这个工具类工程,如果是微服务项目就是一个工具类的微服务,这样做的好处就很明显了,至少公司的研发部在使用到常用的工具类时不必再去网上找到。最近的项目中引入了hutool,估计很多小伙伴都用过去吧,我之前也使用过,只是没有那么全面的认识这个开源项目,那么接下来我们一起来复习一下和去全面认识hutool中常用的工具类吧。
一.统一信用代码的校验
相关类CreditCodeUtil, 老规矩先看看类图
主要包含3的方法,依次是: 1.isCreditCodeSimple,主要是用于统一信用代码的校验功能,简单性判断 2.isCreditCode,主要是用于统一信用代码的校验功能,在校验方便区别1 3.randomCreditCode,随机生成一个测试用的信用代码,可以提供给相应的测试人员去测试相关功能,另外测试需要用到信用代码的话也可以用企查查然后顺便输入一个公司名字就可以拿去测试了
二.Bean操作类,BeanUtil,可以进行Java bean的一系列操作
1.isBean,顾名思义就是判断其是否是一个可以操作的bean,指标: 1).是否存在只有无参数的getXXX方法或者isXXX方法 2).是否存在public类型的字段,即会进行如下的代码判断
public static boolean hasSetter(Class<?> clazz) { //通过反射拿到方法 if (ClassUtil.isNormalClass(clazz)) { for (Method method : clazz.getMethods()) { //这是我们最最最熟悉的set方法了,当然public的判断就一样的了 if (method.getParameterCount() == 1 && method.getName().startsWith("set")) { return true; } } } return false; } 复制代码
2.map转bean 这个就很实用了,相信很多小伙伴都自己写过方法吧,我也写过,但是有轮子了就不必再重复造轮子了,那下面我们来看看,代码是怎么实现的。 1)主方法
public static <T> T mapToBean(Map<?, ?> map, Class<T> beanClass, boolean isIgnoreError) { //通过反射实例newInstanceIfPossible返回其构造方法 //然后通过fillBeanWithMap方法将Map填充到Bean对象中,当然同commons-beanutils里类似参数中可选择跳过copyOptions,以及是否将下划线模式转换为驼峰模式 return fillBeanWithMap(map, ReflectUtil.newInstanceIfPossible(beanClass), isIgnoreError); } 复制代码
2)同类方法fillBeanWithMapIgnoreCase,功能类似,附加一个忽略大小写的小功能,但是别看这小细节,我们再编码过程中吃小细节的亏太多了,所以要特别的注意
3.beanToMap 这也是个很实用的方法,在数据库字段转map方面很好用
/** * 对象转Map * * @param bean bean对象 * @param isToUnderlineCase 是否转换为下划线模式 *对于数据库字段直接转map十分方便 * @param ignoreNullValue 是否忽略值为空的字段 * @return Map */ public static Map<String, Object> beanToMap(Object bean, boolean isToUnderlineCase, boolean ignoreNullValue) { if (null == bean) { return null; } return beanToMap(bean, new LinkedHashMap<>(), isToUnderlineCase, ignoreNullValue); } 复制代码
小结
今天的两个小知识点就介绍完了,主要来说是开发中的一些坑和能够避开的实用方法。 对hutool的工具类感兴趣的可以看看下方的官方文档哈,有详细的功能介绍,不用再重复造轮子了。