常用技巧

发布时间 2023-12-11 11:36:14作者: 皮肤黝黑的小白
 

新增时重复的更新

insert into workflow_define_new
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="workflowDefineId != null">
workflow_define_id,
<if test="deploymentId != null">
deployment_id,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="workflowDefineId != null">
#{workflowDefineId,jdbcType=BIGINT},
</if>
<if test="deploymentId != null">
#{deploymentId},
</if>
</trim>
ON DUPLICATE KEY UPDATE
<if test="deploymentId != null">
deploymentId = #{deploymentId},
</if>

循环遍历map

prices.forEach((key, value) -> {
});

从数据库查询 is_xxx (是或非)

0、1 可以直接用boolean展示 0 false 1 true

循环遍历枚举类型Enum

for (AirlineTypeEnum airlineTypeEnum : AirlineTypeEnum.values()) {
Map<String, Object> map = new HashMap<String, Object>();
map.put("code", airlineTypeEnum.getCode());
map.put("name", airlineTypeEnum.getName());
list.add(map);
}

Mybatis 使用 框架自带增删改查

查询表的映射与这个有关:

sql拼接

where BUSINESS_KEY_ like concat('%:', #{businessKey})

动态insert select

INSERT INTO workflow_control (tenant_id, use_type, is_open) SELECT tenant_id , 1 as use_type , 0 as is_open FROM sys_tenant ;

根据条件连表update left join

update ACT_RU_EXECUTION are
left join workflow_define wd on are.PROC_DEF_ID_ = wd.process_definition_id
set BUSINESS_KEY_ = CONCAT(BUSINESS_KEY_,':',wd.workflow_define_id)
WHERE BUSINESS_KEY_ is not null

截取字符串

这个2 指的是截取前两个,-1 是截取最后一个
SUBSTRING_INDEX(SUBSTRING_INDEX(ahp.BUSINESS_KEY_,':',2),':',-1) ;

No instances available for 10.20.9.12

 
@Bean(name = "restOperations")
@LoadBalanced
public RestOperations restOperations(RestTemplateBuilder builder) {
return builder.build();
}
 

sql用in(里面的东西排序)

WHERE
tenant_id IN (1008, 1069 , 1040 )
ORDER BY
FIELD( tenant_id, 1008, 1069 , 1040)
 

一个List按照另一个List进行排序

sysTenants.sort(Comparator.comparingLong(tenant -> 另一个list.indexOf(tenant.getTenantId())));

list.add() 报 java.lang.UnsupportedOperationException: null 错误

Arrays.asList() 返回的是一个不可变list不能修改 可以使用 new ArrayList(Arrays.adList());

Wrapper and or连用

userWrapper.and(wrapper -> wrapper.like("login_name",keys).or().eq("tel",keys));

replace into

跟 insert 功能类似,不同点在于:replace into 首先尝试插入数据到表中,
1. 如果发现表中已经有此行数据(根据主键或者唯一索引判断)则先删除此行数据,然后插入新的数据。 2. 否则,直接插入新数据。

Sql time格式转换为秒

time_to_sec(字段名);

按照时间查询log

docker service logs -t -f xzq --since 2022-02-28T15:50:00

List按某个字段排序

//多条件-先年龄升序、后分数降序
list = list.stream().sorted(Comparator.comparing(Student::getAge).thenComparing(Comparator.comparing(Student::getScore).reversed())).collect(Collectors.toList());

通过redis key的前缀获取所有的key或者获取所有key对应的value

Set<String> keys = redisTemplate.keys(keyPrefix + "*");
return Arrays.asList(keys.toArray(new String[0]));
 

Switch Enum

//switch中使用枚举
String opStr = "add";
switch (OpCodeEnum.matchOpCode(opStr)) {
case ADD:
System.out.println("加法");
break;
case SUB:
System.out.println("减法");
break;
case MUL:
System.out.println("乘法");
break;
case DIV:
System.out.println("除法");
break;
}