JavaUtils V0.0.3.20200806_beta
个人使用java工具类
1.工具类明细
jdbcUtil 数据库简单操作工具类
LambdaUtil lambda完善工具类
ListUtil 数组工具类
StringUtil 字符串工具类
TreeUtil 属性结构工具类
2.工具类详解
2.1 LambdaUtil
2.1.1 consumerWithIndex
为foreach循环提供索引, 索引从0开始
// 循环list, 设置排序为当前索引+1
list.forEach(LambdaUtils.consumerWithIndex((o, index) -> {
o.setSortIndex(index + 1);
}));
2.1.2 consumerWrapper
为foreach循环提供异常处理方法
list.forEach(LambdaUtils.consumerWrapper(i -> System.out.println(10/i), IOException.class))
2.2 ListUtil
2.2.1 deepCopy
数组深拷贝
实体类必须实现序列化接口
User user = new User('菁菁');
List source = new ArrayList(){{add(user);}};
List target = ListUtils.deepCopy(source);
user.setName('悠悠');
System.out.println(source.get(0).getName()); // 悠悠
System.out.println(target.get(0).getName()); // 菁菁
2.3 TreeUtil
树形结构工具类, 所有对象需继承cn.hyh.models.BaseTreeNode
2.3.1 buildTree
将无序数组构建为树形结构
List test = new ArrayList<>();
test.add(TestEntity.builder().id("1").name("测试1").build());
test.add(TestEntity.builder().id("2").name("测试2").build());
test.add(TestEntity.builder().id("3").name("测试3").parent(TestEntity.builder().id("1").build()).build());
test.add(TestEntity.builder().id("4").name("测试4").parent(TestEntity.builder().id("2").build()).build());
test.add(TestEntity.builder().id("5").name("测试5").parent(TestEntity.builder().id("3").build()).build());
List result = TreeUtils.buildTree(test);
System.out.println(JSON.toJSON(result));
// json结果如下
[
{
"id": "1",
"name": "测试1",
"children": [
{
"id": "3",
"name": "测试3",
"parent": {
"id": "1"
},
"children": [
{
"id": "5",
"name": "测试5",
"parent": {
"id": "3"
},
"children": [ ]
}
]
}
]
},
{
"id": "2",
"name": "测试2",
"children": [
{
"id": "4",
"name": "测试4",
"parent": {
"id": "2"
},
"children": [ ]
}
]
}
]
2.4 JdbcUtil
基于common-dbutils的用于临时操作数据库的工具类, 未配置线程池
后续学习了Hutools中的Db, 感觉更符合身为Python爱好者的我的风格, 但实现方式确实不同, 保留此工具类, 但不会再进行维护
2.4.1 使用说明
//实现抽象类完成数据库配置
@Component
@ConfigurationProperties(prefix = "database.mysql")
@Data
class Mysql extends BaseDatabase {
}
//初始化工具类
@Autowired
private Mysql mysql;
JdbcUtil jdbcUtil = new JdbcUtil<>(mysql);
除getConnection外, 所有方法均会自动关闭连接
2.4.2 getConnection
获取数据库连接
Connection connection = jdbcUtils.getConnection();
2.4.3 get
针对一行一列数据进行查询, 设计用于count语句
Long userNum = (Long) jdbcUtils.get("select count(*) from t_user");
2.4.4 get
获取一行数据, 转化为实体类
User user = jdbcUtils.get("select * from t_user where id = ?", User.class, 1);
2.4.5 list
获取列表数据, 转化为实体类数组
List users = jdbcUtils.list("select * from t_user where sex = ?", User.class, 99);
2.5 StringUtil
因Hutools中对于驼峰转换缺少自定义分隔符, 故特写此工具类
2.5.1 camelCase
分隔符形式的字符串转驼峰式
String test = "my-love-dxl";
StringUtils.camelCase(test); // myLoveDxl
StringUtils.camelCase(test, "-"); // myLoveDxl
StringUtils.camelCase(test, "-", true); // MyLoveDxl
2.6 FileUtil
文件工具类
2.6.1 downloadFromUrl
从url下载文件
try {
FileUtil.downloadFromUrl("http://hyh_cut/document.rar", "C:\\Data\\Temp", "test.rar");
System.out.println("下载成功");
} catch (IOException e) {
e.printStackTrace();
}