Hutool 是一个小而全的 Java 工具类库,通过静态方法封装,降低相关 API 的学习成本,提高工作效率,使 Java 拥有函数式语言般的优雅
介绍
Hutool 是一个功能丰富且易用的 Java 工具库,它通过静态方法封装,旨在帮助开发者快速、便捷地完成各类开发任务。hutool-all
包是 Hutool 的一个聚合包,它包含了 Hutool 所有的模块,使得开发者只需引入一个依赖即可使用 Hutool 提供的所有功能,无需单独引入各个模块。
Hutool 的理念是“用一个工具方法代替一段复杂代码,从而最大限度地避免‘复制粘贴’代码的问题,彻底改变我们写代码的方式。”
- 简化依赖管理: 引入
hutool-all
一个包,即可使用 Hutool 的所有功能,避免了单独引入多个模块的繁琐。
- 提高开发效率: 提供了大量常用工具类和方法,涵盖了字符串、数字、集合、日期、文件、IO、加密、数据库 JDBC、JSON、HTTP 客户端等各个方面,大大减少了开发者编写重复代码的时间。
- 降低学习成本: 通过静态方法封装,使得相关 API 的使用更加简单直观,降低了学习成本。
- 代码简洁优雅: 许多复杂的操作通过 Hutool 的工具方法可以一句话搞定,使得代码更加简洁和可读。
- 避免常见错误: Hutool 对一些常用的操作进行了完善的封装,有助于避免因封装不完善而引入的潜在 bug。
常用的使用示例
以下是一些 Hutool 常用模块的简单示例:
hutool-core(核心工具)
字符串操作
import cn.hutool.core.util.StrUtil;
public class StrUtilExample {
public static void main(String[] args) {
String str = " hello world ";
// 判断是否为空
System.out.println("isEmpty: " + StrUtil.isEmpty(str)); // false
System.out.println("isBlank: " + StrUtil.isBlank(str)); // false
// 去除空白
System.out.println("trim: " + StrUtil.trim(str)); // "hello world"
// 拼接字符串
System.out.println("join: " + StrUtil.join("-", "a", "b", "c")); // "a-b-c"
// 格式化字符串
System.out.println("format: " + StrUtil.format("Hello {}, welcome to {}.", "Hutool", "Java world")); // "Hello Hutool, welcome to Java world."
}
}
日期时间操作
import cn.hutool.core.date.DateUtil;
import java.util.Date;
public class DateUtilExample {
public static void main(String[] args) {
Date date = new Date();
// 格式化日期
String dateStr = DateUtil.format(date, "yyyy-MM-dd HH:mm:ss");
System.out.println("格式化日期: " + dateStr);
// 解析日期字符串
Date parseDate = DateUtil.parse("2023-01-01 12:30:00");
System.out.println("解析日期: " + parseDate);
// 获取当前日期是周几
System.out.println("今天是周几: " + DateUtil.dayOfWeekEnum(date).toChinese());
// 计算两个日期之间的时间差
long betweenDays = DateUtil.betweenDay(DateUtil.parse("2023-01-01"), DateUtil.parse("2023-01-10"));
System.out.println("天数差: " + betweenDays);
}
}
Bean 操作
import cn.hutool.core.bean.BeanUtil;
import lombok.Data;
@Data
class User {
private String name;
private Integer age;
}
public class BeanUtilExample {
public static void main(String[] args) {
User user1 = new User();
user1.setName("Alice");
user1.setAge(25);
// 将Bean转换为Map
java.util.Map<String, Object> map = BeanUtil.beanToMap(user1);
System.out.println("Bean to Map: " + map);
// 将Map转换为Bean
User user2 = BeanUtil.mapToBean(map, User.class, true, null);
System.out.println("Map to Bean: " + user2.getName() + ", " + user2.getAge());
// 属性拷贝
User user3 = new User();
BeanUtil.copyProperties(user1, user3);
System.out.println("Copy properties: " + user3.getName() + ", " + user3.getAge());
}
}
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
public class HttpUtilExample {
public static void main(String[] args) {
// GET 请求
String result = HttpRequest.get("https://www.baidu.com").execute().body();
System.out.println("GET 请求结果:\n" + result.substring(0, 200) + "..."); // 截取部分显示
// POST 请求
String postResult = HttpRequest.post("https://www.example.com/api")
.header("Content-Type", "application/json")
.body("{\"name\": \"test\", \"value\": \"123\"}")
.execute().body();
System.out.println("POST 请求结果:\n" + postResult); // 实际测试时请替换为可用的API
}
}
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
public class JsonUtilExample {
public static void main(String[] args) {
// 创建 JSONObject
JSONObject jsonObject = JSONUtil.createObj()
.put("name", "张三")
.put("age", 30)
.put("isStudent", false);
System.out.println("JSONObject: " + jsonObject);
// 获取值
String name = jsonObject.getStr("name");
System.out.println("Name: " + name);
// 创建 JSONArray
JSONArray jsonArray = JSONUtil.createArray()
.put("apple")
.put("banana")
.put("orange");
System.out.println("JSONArray: " + jsonArray);
// 解析 JSON 字符串
String jsonStr = "{\"city\": \"北京\", \"temp\": 25}";
JSONObject parsedJson = JSONUtil.parseObj(jsonStr);
System.out.println("解析后的JSON: " + parsedJson.getStr("city"));
}
}
Hutool-db 模块简化了 JDBC 操作,提供了 ActiveRecord 思想的数据库操作。需要配置数据源。
// 假设你已经配置了数据源,例如通过 hutool-setting 模块或 Spring 等方式。
// 引入相关类:
// import cn.hutool.db.Db;
// import cn.hutool.db.Entity;
// import java.sql.SQLException;
// import java.util.List;
public class DbUtilExample {
public static void main(String[] args) throws SQLException {
// 示例:插入数据
// Entity entity = Entity.create("user")
// .set("name", "张三")
// .set("age", 20);
// int affectedRows = Db.use().insert(entity);
// System.out.println("插入行数: " + affectedRows);
// 示例:查询数据
// List<Entity> users = Db.use().findAll("user");
// for (Entity user : users) {
// System.out.println("用户: " + user.getStr("name") + ", " + user.getInt("age"));
// }
// 示例:更新数据
// int updatedRows = Db.use().update(
// Entity.create().set("age", 21), // 更新的字段
// Entity.create("user").set("name", "张三") // where 条件
// );
// System.out.println("更新行数: " + updatedRows);
// 示例:删除数据
// int deletedRows = Db.use().del(Entity.create("user").set("name", "张三"));
// System.out.println("删除行数: " + deletedRows);
}
}
如果你使用 Maven,在 pom.xml
中添加如下依赖:
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.27</version> </dependency>
如果你使用 Gradle,在 build.gradle
中添加如下依赖:
implementation 'cn.hutool:hutool-all:5.8.27' // 请使用最新稳定版本
总结
hutool-all
包是一个非常实用的 Java 工具库,它提供了丰富而便捷的工具方法,可以大幅提升开发效率,简化代码,是 Java 开发者日常工作中不可或缺的利器。通过上面的示例,你可以对 Hutool 的常用功能有一个初步的了解。建议查阅 Hutool 官方文档获取更详细的使用说明和更多模块的介绍。