常用技巧
新增时重复的更新
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)
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;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)