Java经常使用工具类

提供参数,时间,加密、验证码、邮件、跨域、随机数、Id生成等开发中经常使用到的工具。。。html

1、导入依赖

<dependency>
  <groupId>cn.gjing</groupId>
  <artifactId>tools-common</artifactId>
  <version>1.2.6</version>
</dependency>

2、经常使用注解:

一、@NotNull

方法参数校验,如若要排除方法中的某个参数,搭配使用@Exclude注解到指定参数上;前端

二、@NotEmpty

方法参数校验, 可对null和空字符串进行校验,如若要排除方法中的某个参数,搭配使用@Exclude2注解到指定参数上,若是须要自定义异常提示信息, 可设置messagejava

若是是 Spring环境, 须要手动在xml文件中进行以下配置, SpringBoot环境无需配置
<bean id="xxx" class="cn.gjing.tools.common.handle.ToolsCommonNotEmptyAdapter"/>

三、@EnableCors

开启全局跨域,在启动类或者任意类使用该注解便可,会走默认配置,也能够自行配置,配置示例以下:git

  • yml方式
cors:
  # 支持的方法类型
  allowed-methods: POST,GET,DELETE,PUT,OPTIONS
  # 支持的请求头
  allowed-headers: xxx
  # 支持的域名
  allowed-origins: xxx
  # 方法路径
  path: /**
  max-age: 1800
  • javaBean方式
/**
 * @author Gjing
 **/
@Configuration
public class CorsConfiguration {
    @Bean
    public CommonCors cors() {
        return CommonCors.builder()
                .allowCredentials(Boolean.TRUE)
                .maxAge(1800L)
                .path("/**")
                .build();
    }
}

3、返回结果模板

一、ResultVO

通用返回结果模板github

参数 描述
code 状态码
message 提示信息
data 数据

二、PageResult

分页查询返回结果集跨域

参数 描述
totalPages 总页数
CurrentPage 当前页数
totalRows 总条数
pageRows 每页的条数
data 数据

三、ErrorResult

错误返回模板数组

参数 描述
code 状态码
message 提示信息

4、参数校验工具类:

主要提供参数校验、处理,匹配等等, 使用时经过ParamUtils.xxx()使用,如下为该工具的全部方法介绍 :缓存

一、isEmpty

判断给定参数是否为空,能够是字符串、包装类型、数组、集合等服务器

参数 描述
str 参数

二、isNotEmpty

判断给定是否不为空,能够是字符串、包装类型、数组、集合等并发

参数 描述
str 参数

三、requireNotNull

该参数不能为空,为空抛出NPE,不然返回原值

参数 描述
str 参数

四、ListHasEmpty

判断集合里是否含有空值

参数 描述
list 集合

五、multiEmpty

检查多个参数里面是否有空值

参数 描述
params 多个参数

六、equals

判断两个参数是否相等

参数 描述
t 参数1
u 参数2

七、trim

去除字符串的空格

参数 描述
str 字符串

八、trim

去除集合中的空元素

参数 描述
list 集合

九、removeSymbol

移除字符串两边的指定符号

参数 描述
str 字符串
symbol 符号

十、removeStartSymbol

移除字符串开始的指定符号

参数 描述
str 字符串
symbol 符号

十一、removeEndSymbol

移除字符串末尾的指定符号

参数 描述
str 字符串
symbol 符号

十二、split

根据符号截取

参数 描述
str 字符串
symbol 符号

1三、removeAllSymbol

移除字符串里的全部指定符号

参数 描述
str 字符串
symbol 符号

1四、contains

判断数组里是否包含指定的值

参数 描述
arr 数组
val

1五、isEmail

判断是否为email

参数 描述
email 字符串

1六、isMobileNumber

判断是不是手机号码

参数 描述
phone 字符串

1七、isTelPhone

判断是否是电话号码

参数 描述
tel 字符串

1八、isPostCode

判断是否为邮编

参数 描述
postCode 字符串

5、时间工具类:

对时间进行操做,使用时经过TimeUtils.xxx()调用,该工具的全部方法介绍以下 :

一、dateToString

获取文本格式时间

参数 描述
date Date对象

二、dateToLocalDateTime

date转localDateTime

参数 描述
date Date对象

三、dateToLocalDate

date转localDate

参数 描述
date Date对象

四、localDateToDate

localDate转Date

参数 描述
localDate LocalDate对象

五、LocalDateToString

LocalDate转指定格式字符串

参数 描述
localDate LocalDate对象

六、LocalDateTimeToString

LocalDateTime转指定格式字符串

参数 描述
localDateTime LocalDateTime对象

七、localTimeToString

LocalTime转指定格式字符串

参数 描述
localTime LocalTime对象

八、stringToLocalDate

字符串日期转指定格式

参数 描述
time 字符串日期

九、stringToLocalDateTime

字符串日期转指定格式

参数 描述
time 字符串日期

十、localDateTimeToDate

LocalDateTime转Date

参数 描述
dateTime LocalDateTime对象

十一、localDateTimeToStamp

localDateTime转时间戳

参数 描述
dateTime LocalDateTime对象

十二、stampToLocalDateTime

时间戳转LocalDateTime

参数 描述
stamp 时间戳

1三、getYearsByStartTime

查询一个日期(年月日格式)到目前过了多少年

参数 描述
startTime 开始的时间(字符串)

1四、dateToString

Date转字符串

参数 描述
date Date对象
format 格式,如:yyyy-MM-dd

1五、stringToDate

字符串转Date

参数 描述
date 时间字符串

1六、getDate

字符串日期转指定格式Date

参数 描述
date 时间字符串
format 格式,如:yyyy-MM-dd

1七、stringDateToCalendar

字符串时间转日期

参数 描述
str 字符串时间

1八、calendarToDate

日期转Date

参数 描述
calendar 日期
format 格式,如:yyyy-MM-dd

1九、calendarToStringDate

日期转字符串

参数 描述
calendar 日期
format 格式,如:yyyy-MM-dd

20、getAllDaysOfMonth

获取某个时间所在月份的天数

参数 描述
date 时间对象

2一、getDays

获取时间的天数,如2017-12-13,返回13

参数 描述
date 时间对象

2二、getYears

获取时间所在的年份

参数 描述
date 时间对象

2三、getMonth

获取时间所在月份

参数 描述
date 时间对象

2四、addMonth

增长月份

参数 描述
date 时间对象
n 月数

2五、addDay

增长天数

参数 描述
date 时间对象
n 天数

2六、stringDateToStamp

字符串日期转时间戳

参数 描述
stringDate 字符串时间

2七、stampToStringDate

时间戳转字符串时间

参数 描述
timeStamp 时间戳

2八、dateBetween

计算两个日期相差的天数(不包括今天)

参数 描述
startDate 开始时间
endDate 结束时间

2九、dateBetweenIncludeToday

计算两个日期相差的天数(包括今天)

参数 描述
startDate 开始时间
endDate 结束时间

6、加密工具类

主要用于数据加密, 该工具包含的全部方法以下:

一、encodeMd5

MD5加密

参数 描述
body 要加密的内容

二、encodeBase64

Base64加密

参数 描述
content 要加密的内容

三、decodeBase64

Base64解密

参数 描述
content 要加密的内容

四、encodeSha256Hmac

sha566 hmac加密

参数 描述
str 要加密的内容
secret 密钥

五、sha1Hmac

sha1Hmac加密

参数 描述
str 要加密的内容
secret 密钥

六、encodeAes

AES加密

参数 描述
content 要加密的内容
password 加密须要的密码

七、decodeAes

AES解密

参数 描述
content 要加密的内容
password 加密须要的密码

7、随机数工具类

用于随机生成数字或字符串,使用时经过RandomUtils.xxx()调用,该工具包含的全部方法以下 :

一、randomInt

获取随机整数,可设置最大值和最小值

参数 描述
min 最小值
max 最大值

二、getRandom

获取一个Random实例

三、generateMixString

生成混合指定长度字符串(数字、字母大小写)

参数 描述
length 生成的字符串长度

四、generateString

获取指定长度纯字符串(字母大小写)

参数 描述
length 生成的字符串长度

五、generateNumber

获取指定长度数字字符串

参数 描述
length 生成的字符串长度

8、Bean工具类:

使用时经过BeanUtils.xxx()调用

一、copyProperties

属性复制,用于将一个对象的属性赋值到另外一个对象,两个对象间的参数名和数据类型必须相同
参数说明

参数 描述
source 源对象
target 目标对象
ignores 忽略的字段,设置后不会进行复制

二、toBean

将map转为bean对象
参数说明

参数 描述
map 须要转为Bean的map
beanClass 目标Bean的class

三、findMethod

查找类中的方法
参数说明

参数 描述
clazz 目标类class
methodName 方法名
paramTypes 方法参数类型

四、findDeclaredMethod

查找类中声明的方法
参数说明

参数 描述
clazz 目标类class
methodName 方法名
paramTypes 方法参数类型

五、setFieldValue

给类中的某个字段设置值
参数说明

参数 描述
o 字段所在的对象
field 字段
value

六、getFieldValue

获取某个字段的值
参数说明

参数 描述
o 字段所在的对象
field 字段

七、toMap

将bean对象转为map
参数说明

参数 描述
bean 须要转为map的bean对象

八、getInterfaceType

获取泛型接口中某个泛型的真实对象类型
参数说明

参数 描述
source 实现泛型接口的类
typeInterface 泛型接口
paramIndex 泛型参数下标,0开始

9、验证码工具类

用于生成英文和数字混合的验证码,使用时经过构造AuthCodeUtils在进行调用其中的方法,构造时参数以下 :

参数 描述
width 验证码图片宽度
height 验证码图片高度
codeCount 验证码字符个数
lineCount 验证码干扰线数

该工具下的全部方法以下:

一、writeToLocal

生成验证码到本地,案例以下

public class Test{
    public static void main(String[] args) {
        AuthCodeUtil authCodeUtil = new AuthCodeUtil(160,40,5,150);
        try {
            String path="/文件夹路径/code.png";
            //写入到本地时能够经过getCode()方法获取生成的验证码
            String code = authCodeUtil.writeToLocal(path).getCode();
            System.out.println(code);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

二、getCode

获取生成的验证码字符

public class Test{
    public static void main(String[] args){
      String code = authCodeUtil.writeToLocal(xxx).getCode;
      System.out.println(code);
    }
}

三、write

以流的方式返回给前端,案例以下

public class Test{
    @GetMapping("/code")
    public void getCode(HttpServletResponse response, HttpServletRequest request) throws IOException {
        AuthCodeUtil authCodeUtil = new AuthCodeUtil(100, 50, 4, 50);
        response.setContentType("image/jpeg");
        //禁止图像缓存
        response.setHeader("param", "no-cache");
        response.setDateHeader("Expires", 0);
        authCodeUtil.write(response.getOutputStream());
    }
}

10、Id生成工具类

**项目中使用能够将IdUtils注册为一个bean以在其余地方进行依赖注入, 或者将其设置为静态的, 不要出现重复的IdUtils对象, 不然并发状况下会出现重复,
若是要调用snowId, 必须经过带参数的构造方法进行建立实例**

一、uuid

获取去除-符号的uuid

public class Test{
    public static void main(String[] args){
      IdUtils idUtils = new IdUtils();
      System.out.println(idUtils.uuid());
    }
}

二、snowId

获得一个惟一的ID,在多服务须要操做同一个数据表的状况下, 须要保证每一个服务的centerIdmachineId惟一

public class Test{
    public static void main(String[] args){
      IdUtils idUtils = new IdUtils(1,2);
      for(int i = 0; i < 100; i++) {
        System.out.println(idUtils.snowId());
      }
    }
}

11、文件工具类

对文件的一些操做,包含的全部方法以下 :

一、downloadByUrl

从远程URL地址下载文件到本地

参数说明

参数 描述
fileUrl 要下载的文件URL地址
fileName 保存到本地的文件名, 须要加后缀
savePath 保存到本地的目录

二、downloadByStream

将本地的指定地址文件经过流下载

参数说明

参数 描述
response HttpServletResponse
file 文件对象

三、getBytes

将文件转为byte数组

参数说明

参数 描述
file 文件

四、writeFile

将字节数组写入到指定文件, 写入成功返回true

参数说明

参数 描述
bytes byte数组
file 文件对象

五、readInputStream

从输入流读取内容并返回字节数组

参数说明

参数 描述
InputStream 输入流

六、getExtension

获取文件扩展名

参数说明

参数 描述
fileName 文件名

12、邮件工具类

用于发送邮件,支持普通邮件和带附件邮件,支持html格式文本,支持群发和抄送,返回true为发送成功,使用时经过EmailUtils.of()生成实例以后在进行其中的方法,of()方法参数以下 :

参数 描述
host smtp服务器地址,好比qq邮箱:smtp.qq.com
password 发送者邮箱密码,有些邮箱须要用受权码代替密码
from 发送人邮箱

该工具包含的全部方法以下 :

一、sendEmail

发送邮件,参数以下:

参数 描述
subject 主题
body 邮件内容,支持HTML
files 要发送的附件物理地址,不要能够传null或者空数组
tos 收件人邮箱帐号,多个使用逗号隔开
copyTo 抄送人地址,多个用逗号隔开,不抄送能够传null或者空字符串

完整示例以下 :

public class Test{
    public static void main(String[] args) {
        boolean b = EmailUtils.of("smtp.qq.com", "发送人密码或者受权码", "发送人邮箱")
                .sendEmail("主题", "内容",new String[]{"附件物理地址"},"收件人邮箱地址", "抄送人邮箱地址");
        if (b) {
            System.out.println("发送成功");
        }
    }
}

工具源码地址:tools-common

相关文章
相关标签/搜索