20240717
一、对于数据关联的两张表,对两张表里的属性进行更改
1. 思路就是,先找出每张表需要修改的字段,如果有两张表都需要修改的话,就在两个实体类里面生成对应的字段,修改同一个数据,保证数据的一致性。
2. 定义一个完整的实体类,用来接收前端返回的数据,然后用两个表的属性的VO进行接受,然后操作数据库
如:
<update id="updateQShouInfo">
UPDATE om_term_info
SET
out_region_name = #{out_region_name},
out_term_ship_ship_time = #{ship_time},
out_term_ship_take_address = #{out_term_ship_take_address},
branch_name = #{branch_name},
out_logistics_provider_info_name = #{out_logistics_provider_info_name},
logistics_name = #{logistics_name},
logistics_phone = #{logistics_phone},
ship_state=#{ship_state}
WHERE term_sn = #{term_sn}
</update>
<update id="updateQShouShip">
UPDATE out_term_ship
SET
ship_time = #{ship_time},
branch_name = #{branch_name},
bank_contacts = #{bank_contacts},
bank_tel = #{bank_tel}
WHERE term_sn = #{term_sn}
</update>
二、git数据丢失!!!!!!(我的就是因为冲突,合并给我的干没了)
1. 对于数据丢失的问题,第一时间先去看git分支里面,有没有当时的分支,有的话提取出来就好了。
2. 去查看搁置(上一篇有)
3. 什么都没了!!!!也还有办法
4. 还有种,是通过git文件,但我没有,有需要的可以去搜索其他博主。
三、做省市县(数据库问题,redis缓存问题,如何解决访问速度问题等…问题真多)
1. 首先就是省市县数据,我找了很久,主流方法就是,注册高德或者腾讯的,我没去做,哈哈哈
2. 直接找数据,进行导入
其他博主的,完了,忘记谁的了,只有网盘了,不管了:
不知名的大佬
3. 然后,我不需要他的索引(可能因为我掌握不够),适用sql语句,删除索引
UPDATE 表名
SET 字段名= SUBSTRING_INDEX(last_column, ',', -1);
4. idea只显示500条数据,如何修改:设置里调
5. 用的递归和redis进行缓存(我的设计问题,导致redis变的很慢,需要修改)
递归:
// 构建层级结构的方法
private List<addDistrictDTO> buildHierarchy(List<addDistrictDTO> allDistrict, String parentCode) {
//这里开始进入方法,传入的是我们的allDistrict(含值的对象),和parentcode的值
List<addDistrictDTO> result = new ArrayList<>();
//定义一个集合 result用于存放结果
System.out.println("Building hierarchy for parentCode: " + parentCode);
// 打印当前递归层级的父节点代码
// 遍历所有的地区对象
for (addDistrictDTO area : allDistrict) {
System.out.println("Checking area: " + area.getCode() + ", parentCode: " + area.getParent_code());
// 打印正在检查的地区代码和其父节点代码
if ((parentCode == null && area.getParent_code()== null) || (parentCode != null && parentCode.equals(area.getParent_code()))) {
// 如果是子地区,则递归调用 buildHierarchy 方法,构建子地区的树形结构
List<addDistrictDTO> children = buildHierarchy(allDistrict, area.getCode());
// 如果子地区列表不为空,将其设置为当前地区的子地区
if (!children.isEmpty()) {
area.setChildren(children);
}else {
area.setChildren(new ArrayList<>()); // 确保 children 始终初始化为空列表
}
// 将当前地区加入结果列表
result.add(area);
}
}
// 打印当前父节点下构建的结果
System.out.println("Result for parentCode " + parentCode + ": " + result);
return result;
}
redis:
@Override
public List<addDistrictDTO> getAllDistrict() {
// 尝试从Redis获取数据
Map<Object, Object> districtHash = stringRedisTemplate.opsForHash().entries("District2");
if (!districtHash.isEmpty()) {
// Redis中有数据,转换为DTO对象列表
Collection<Object> districtJsons = districtHash.values();
List<addDistrictDTO> shopTypes = new ArrayList<>();
for (Object json : districtJsons) {
addDistrictDTO dto = JSONUtil.toBean(json.toString(), addDistrictDTO.class);
shopTypes.add(dto);
}
return buildHierarchy(shopTypes, null);
}
// Redis中没有数据,从数据库查询
List<addDistrictDTO> shopTypes = addMapper.getAllDistrict();
if (shopTypes == null) {
return null;
}
// 将数据存入Redis的哈希结构中
Map<String, String> districtMap = new HashMap<>();
for (addDistrictDTO dto : shopTypes) {
String jsonStr = JSONUtil.toJsonStr(dto);
districtMap.put(dto.getCode(), jsonStr);
}
stringRedisTemplate.opsForHash().putAll("District2", districtMap);
stringRedisTemplate.expire("District2", 10, TimeUnit.MINUTES); // 设置过期时间
return buildHierarchy(shopTypes, null);
}
四 、解决SpringBoot启动时异常:BeanDefinitionStoreException和ConflictingBeanDefinitionException
直接maven那里清理一下:maven clean