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

相關文章
相關標籤/搜索