JAVA
对象集合转字符串集合
List<String> attrValues = parameterValue.stream()
.map(ParameterValue::getValue)
.collect(Collectors.toList());
集合排序
升序
tempList.stream().sorted(Comparator.comparing(TempDO::getId))
.collect(Collectors.toList());
降序
tempList.stream().sorted((a1, b1) -> b1.getId().compareTo(a1.getId()))
.collect(Collectors.toList());
生成一个简单的条件查询
Wrappers.<Demo>query().lambda().eq(Demo::getId,id)
查询数据,为null则抛异常
OrderDO orderDO = Optional.ofNullable(orderManager.findByOrderNo(orderNo)).orElseThrow(() -> new Exception(ErrorCode.ORDER_NULL_ERROR));
删除符合条件的对象
idList.removeIf(item-> Objects.equals(item,id));
集合过滤
List<String> list = new ArrayList<>();
list.add("b");
list.add("a");
list = list.stream().filter(item->"a".equals(item)).collect(Collectors.toList());
System.out.println(list);
// 输出:[a]
// filter内符合条件的保留
集合分组转map
根据指定字段进行分组
Map<String, List<Score>> map = scoreList.stream().collect(
Collectors.groupingBy(
score -> score.getScoreYear()+score.getStudentId()
));
对象转map,集合对象转Map
Map<String, FaceConfigDO> faceConfigMap = CollStreamUtil.toIdentityMap(faceConfigList, FaceConfigDO::getOrgId);
storehouseList.stream().collect(Collectors.toMap(StorehouseDO::getStorehouseNo, StorehouseDO::getStorehouseName, (key1, key2) -> key2));
## 另:当要初始化一个Hasmap,知道集合的长度,不确定map最终的size时,可以初始化长度为:size() * 4 / 3 + 1
## 该公式是为了根据要存入的元素数量,反推出一个合适的 HashMap 初始容量,让元素全部放入后刚好不超过负载因子阈值,从而避免插入过程中的扩容 rehash 开销。
MutablePair(返回一个可变对象)
MutablePair<String, Object> mp = MutablePair.of(payOrderId, params);
mutablePair.left/right
获取调用方的方法名
Thread.currentThread().getStackTrace()[2].getMethodName()
注解类
当属性为空时返回null
@JsonInclude
类注解,加上这个后,当前类中的属性如果为空也会返回一个null
允许属性赋值为null
@TableField(updateStrategy= FieldStrategy.IGNORED)
枚举注解
@EnumValue(enumClass = AllowPurchaseObjectRuleTypeEnum.class, message = "允许购买对象规则类型 枚举错误", enumMethod = "isValidName")
Excel导出
@ExcelIgnoreUnannotated
类注解,加上这个注解后没有标注@ExcelProperty注解的字段就不会导出
正则
IDEA多行注释转单行注释
支持匹配以下两种注释
/* asdasd */
/* asdasd*/
匹配正则:\/\*+(.*)( |)\*\/
替换正则:// $1
文档注释
指向本类中的value()方法
{@link #value()}.
指向Demo类
@see Demo
mysql
字段存储json字符串,增加新字段
-- 假设原值是{"enable":"T"},执行后:{"enable":"T","otaRegisterEntry":"F"}
-- 是覆盖执行,重复执行会对otaRegisterEntry进行覆盖更新,所以线上要修改也可以考虑用这个
UPDATE sys_config
SET
value = JSON_SET(
value,
'$.otaRegisterEntry',
'F'
),
upd_time = NOW()
WHERE
code = 'rule_other'
AND JSON_VALID(value) = 1;
-- 不存在该字段时才新增
UPDATE sys_config
SET value = JSON_SET(value, '$.otaRegisterEntry', 'T'),
upd_time = NOW()
WHERE code = 'rule_other'
AND JSON_VALID(value) = 1
AND JSON_CONTAINS_PATH(value, 'one', '$.otaRegisterEntry') = 0;