hutool工具類常用API整理

紫邪情發表於2022-04-12

0、官網學習地址

1、依賴


	<dependency>
		 <groupId>cn.hutool</groupId>
		 <artifactId>hutool-all</artifactId>
		 <version>${hutool.version}</version>
	</dependency>

2、工具集

2.1、convert

  • 此工具用於於各種型別資料的轉換

	// 轉換為字串
	int a = 1;
	String aStr = Convert.toStr(a);

	// 轉換為指定型別陣列
	String[] b = {"1", "2", "3", "4"};
	Integer[] bArr = Convert.toIntArray(b);

	// 轉換為日期物件
	String dateStr = "2017-05-06";
	Date date = Convert.toDate(dateStr);

	// 轉換為列表
	String[] strArr = {"a", "b", "c", "d"};
	List<String> strList = Convert.toList(String.class, strArr);

2.2、DataUtil

  • 此工具定義了一些操作日期的方法: Date、long、Calendar之間的相互轉換

	// 當前時間
	Date date = DateUtil.date();

	// Calendar轉Date
	date = DateUtil.date(Calendar.getInstance());

	// 時間戳轉Date
	date = DateUtil.date(System.currentTimeMillis());
	// 自動識別格式轉換
	String dateStr = "2017-03-01";
	date = DateUtil.parse(dateStr);

	// 自定義格式化轉換
	date = DateUtil.parse(dateStr, "yyyy-MM-dd");

	// 格式化輸出日期
	String format = DateUtil.format(date, "yyyy-MM-dd");

	// 獲得年的部分
	int year = DateUtil.year(date);

	// 獲得月份,從0開始計數
	int month = DateUtil.month(date);

	// 獲取某天的開始、結束時間
	Date beginOfDay = DateUtil.beginOfDay(date);
	Date endOfDay = DateUtil.endOfDay(date);

	// 計算偏移後的日期時間
	Date newDate = DateUtil.offset(date, DateField.DAY_OF_MONTH, 2);

	// 計算日期時間之間的偏移量
	long betweenDay = DateUtil.between(date, newDate, DateUnit.DAY);

2.3、StrUtil

  • 此工具定義了一些操作字串的方法

	// 判斷是否為空字串
	String str = "test";
	StrUtil.isEmpty(str);
	StrUtil.isNotEmpty(str);

	// 去除字串的前字尾
	StrUtil.removeSuffix("a.jpg", ".jpg");
	StrUtil.removePrefix("a.jpg", "a.");

	// 格式化字串
	String template = "這只是個佔位符:{}";
	String str2 = StrUtil.format(template, "我是佔位符");
	LOGGER.info("/strUtil format:{}", str2);

2.4、ClassPathResource

  • 此工具是獲取ClassPath下的檔案,在Tomcat等容器中,ClassPath一般為:WEB-INFO/classes

	// 獲取定義在src/main/resources資料夾中的配置檔案
	ClassPathResource resource = new ClassPathResource("generator.properties");
	Properties properties = new Properties();
	properties.load(resource.getStream());
	LOGGER.info("/classPath:{}", properties);

2.5、ReflectUtil

  • 此工具是為了反射獲取類的方法及建立物件

	// 獲取某個類的所有方法
	Method[] methods = ReflectUtil.getMethods(PmsBrand.class);

	// 獲取某個類的指定方法
	Method method = ReflectUtil.getMethod(PmsBrand.class, "getId");

	// 使用反射來建立物件
	PmsBrand pmsBrand = ReflectUtil.newInstance(PmsBrand.class);

	// 反射執行物件的方法
	ReflectUtil.invoke(pmsBrand, "setId", 1);

2.6、NumberUtil

  • 此工具是用於各種型別數字的加減乘除操作及判斷型別

	double n1 = 1.234;
	double n2 = 1.234;
	double result;

	// 對float、double、BigDecimal做加減乘除操作
	result = NumberUtil.add(n1, n2);
	result = NumberUtil.sub(n1, n2);
	result = NumberUtil.mul(n1, n2);
	result = NumberUtil.div(n1, n2);

	// 保留兩位小數
	BigDecimal roundNum = NumberUtil.round(n1, 2);
	String n3 = "1.234";

	// 判斷是否為數字、整數、浮點數
	NumberUtil.isNumber(n3);
	NumberUtil.isInteger(n3);
	NumberUtil.isDouble(n3);

2.7、BeanUtil

  • 此工具是用於Map與JavaBean物件的互相轉換以及物件屬性的拷貝

	PmsBrand brand = new PmsBrand();
	brand.setId(1L);
	brand.setName("小米");
	brand.setShowStatus(0);

	// Bean轉Map
	Map<String, Object> map = BeanUtil.beanToMap(brand);
	LOGGER.info("beanUtil bean to map:{}", map);

	// Map轉Bean
	PmsBrand mapBrand = BeanUtil.mapToBean(map, PmsBrand.class, false);
	LOGGER.info("beanUtil map to bean:{}", mapBrand);

	// Bean屬性拷貝
	PmsBrand copyBrand = new PmsBrand();
	BeanUtil.copyProperties(brand, copyBrand);
	LOGGER.info("beanUtil copy properties:{}", copyBrand);

2.8、CollUtil

  • 此工具是集合的一些操作

	// 陣列轉換為列表
	String[] array = new String[]{"a", "b", "c", "d", "e"};
	List<String> list = CollUtil.newArrayList(array);

	// 陣列轉字串時新增連線符號
	String joinStr = CollUtil.join(list, ",");
	LOGGER.info("collUtil join:{}", joinStr);

	// 將以連線符號分隔的字串再轉換為列表
	List<String> splitList = StrUtil.split(joinStr, ',');
	LOGGER.info("collUtil split:{}", splitList);

	// 建立新的Map、Set、List
	HashMap<Object, Object> newMap = CollUtil.newHashMap();
	HashSet<Object> newHashSet = CollUtil.newHashSet();
	ArrayList<Object> newList = CollUtil.newArrayList();

	// 判斷列表是否為空
	CollUtil.isEmpty(list);

2.9、MapUtil

  • 此工具可用於建立Map和判斷Map是否為null

	// 將多個鍵值對加入到Map中
	Map<Object, Object> map = MapUtil.of(new String[][]{
		{"key1", "value1"},
		{"key2", "value2"},
		{"key3", "value3"}
	});

	// 判斷Map是否為空
	MapUtil.isEmpty(map);
	MapUtil.isNotEmpty(map);

2.10、AnnotationUtil

  • 此工具可用於獲取註解和註解中指定的值

	// 獲取指定類、方法、欄位、構造器上的註解列表
	Annotation[] annotationList = AnnotationUtil.getAnnotations(HutoolController.class, false);
	LOGGER.info("annotationUtil annotations:{}", annotationList);

	// 獲取指定型別註解
	Api api = AnnotationUtil.getAnnotation(HutoolController.class, Api.class);
	LOGGER.info("annotationUtil api value:{}", api.description());

	// 獲取指定型別註解的值
	Object annotationValue = AnnotationUtil.getAnnotationValue(HutoolController.class, RequestMapping.class);

2.11、SecureUtil

  • 此工具用於MD5加密

	// MD5加密
	String str = "123456";
	String md5Str = SecureUtil.md5(str);
	LOGGER.info("secureUtil md5:{}", md5Str);

2.12、CaptchaUtil

  • 此工具用於生成圖形驗證碼

	// 生成驗證碼圖片
	LineCaptcha lineCaptcha = CaptchaUtil.createLineCaptcha(200, 100);
	try {
		request.getSession().setAttribute("CAPTCHA_KEY", lineCaptcha.getCode());
		response.setContentType("image/png");//告訴瀏覽器輸出內容為圖片
		response.setHeader("Pragma", "No-cache");//禁止瀏覽器快取
		response.setHeader("Cache-Control", "no-cache");
		response.setDateHeader("Expire", 0);
		lineCaptcha.write(response.getOutputStream());
	} catch (IOException e) {
		e.printStackTrace();
	}

相關文章