开发日常常用方法

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;
posted @ 2023-04-07 11:22  互联网-搬砖人  阅读(229)  评论(0)    收藏  举报