项目链接:https://github.com/LJWLgl/CommonUtil
概述
开发常用工具类总结,如果对你有用欢迎 star~
导入项目
<dependency>
<groupId>io.github.ljwlgl</groupId>
<artifactId>common-util</artifactId>
<version>2.0.1</version>
</dependency>
# FastJsonUtil(FastJson 工具类)
- toJsonString(Object object), 序列化 Json
- toJsonString(Object object, String... reAttrs),序列化 Json 转时删除不必要的属性
- eval(String json, String path), 从 Json 中根据 Path 取出对象
- eval(String json, String path, Class<t> clz)</t>, 根据 path 从 json 中取出结果并反序列成 JavaBean
- List<t> evals(String json, String path, Class<t> clz)</t></t>, 根据 path 从 json 中取出结果并反序列成 JavaBean,该方法只支持 array
- put(String json, String path, Object obj),根据 path 向 json 加入指定对象,只支持 JSONObject
- parseObject(String json, Class<t> clazz)</t>,反序列化 Json
- List<t> parseArray(String json, Class<t> clazz)</t></t>,反序列化 List
- String getJsonValue(String jsonStr, String key),获取 Json 字符串某节点的值
# DateUtil(时间转换工具类)
在日常开发过程中,我们进程会需要把 Date 转成 String,或者把 String 转成 Date,该工具类大致上能满足我们日志开发需要:
- getCurrentDate(),获取当期日志,只包含日期
- calcIntervalDays(Date date1, Date date2),计算两个日期间隔的天数
- dayOfWeek(Date date),返回 data 对应的是星期几
- getTodayMinutes(),获取今天的分钟数,如今天 18:05,则返回 1805
- getIntervalDate(Date time, int days),获取指定间隔天数的日期,比如昨天 getIntervalDate(new Date(), -1)
- dateToShortDateString(Date date),将 date 转成 String,输出 String 只包含年月日
- dateToString(Date date), 将 date 转成 String,输出 String 包含年月日时分秒
- stringToDate(String dateStr),将 String 转成 Date,默认时区东八区,TimeZone.getTimeZone("Asia/Shanghai")
- dateToVoString(Date date) ,后端经常会根据传入 Date 生成 View 层的 String 传给前端,该方法计算成相应中文,会例如:
- 1 分钟内:刚刚
- 超过 1 分钟并在 1 小时内:某分钟前 ( 1 分钟前)
- 超过 1 小时并在当日内:某小时前( 1 小时前)
- 昨天:昨天 + 小时分钟(昨天 08:30 )
- 昨天之前并在当年内:某月某日 + 小时分钟( 1 月 1 日 08:30 )
- 隔年:某年某月某日 + 小时分钟( 2017 年 1 月 1 日 08:30 )
# RegexUtil(正则工具类)
- isMobileExact(CharSequence input),是否是手机号
- isEmail(CharSequence input),是否是 email
- isURL(CharSequence input),是否是 URL
- isIP(CharSequence input,是否是 IP
- isMatch(String regex, CharSequence input),是否匹配正则表达式
- getMatches(String regex, CharSequence input),获取正则表达式的部分
- ...
# NetworkUtil(获取本地 IP 和主机名工具类)
拿到本机 IP 不是一件困难的事,但是拿到正确的就比较难了,本工具类,是参考了开源项目CAT内部的实现,提供静态方法如下:
- getLocalHostAddress(),返回本机 IP
- getLocalHostName(),返回主机名
- getLocalInetAddress,返回 InetAddress
# BigDecimalUtil(BigDecimal 计算工具类)
在和钱打交道的服务里,经常会用到 BigDecimal 类,下面提供一些他的计算方法
- subtract(double x, double y)
- add(double x, double y)
- multiply(double x, double y)
- divide(double x, double y, int scale)
- roundUp(double val),近似处理,向上取整
- roundUp(double val, int scale), 近似处理,向上取整,scale 保留点的位数
- roundDown(double val)
- roundDown(double val, int scale)
# HttpUtil( http 请求工具类)
在服务里请求别的接口也是很常见的事
- doGet(String url, Map<String, String> queryParam),get 请求,queryParam 是参数
- doPost(String url, Map<String, String> params, String json),json 请求体内是 json 字符串
- ... doPost 的重载方法
# EmailUtil(邮件发送工具类)
邮件工具类是通过 JavaEmail 实现,企业级项目一般都会专门的服务去发送邮件,但如果自己的小 Demo,用工具类发送 Email 也未尝不可。示例 Demo 如下,有兴趣的可以 fork 代码自己研究一下,代码有详情的注释。
public class EmailUtilTest {
@Before
public void before() throws GeneralSecurityException {
// 发送邮箱配置,授权密码可以去邮件运营商获取
EmailUtil.config(EmailUtil.SMTP_QQ(false), "xxx@qq.com", "xxxxxx");
}
@Test
public void testSendText() throws MessagingException {
System.out.println("test");
}
}
# ProtobufUtil(提供 Protobuf 格式的序列化和反序列)
# GZIPUtil(提供 Gzip)
- compress(String str),字符串压缩为 GZIP 字节数组
- compress(String str, String encoding),字符串压缩为 GZIP 字节数组
- uncompress(byte[] bytes),GZIP 解压缩