要点记录
1.MybatisPlus Java API 2.0版本 更新操作 更新键值为NULL无效的问题
解决:使用 更新全部列解决
activityEntity.setUpdateTime(null);
Integer result = activityMapper.updateAllColumnById(activityEntity);
2.Redis 整合SpringBoot API zset 存储<key,value>
解决:value 必须为String类型 否则报错
zSetOperations.incrementScore(key, value, score);
3.Redis 整合SpringBoot API Zset取前 Count 个元素
解决:zset会根据 分值 进行返回 如果存在相同的分值 value 则继续向后顺延一位
zSetOperations.reverseRangeWithScores(getUserRankKey(gameId, rid), 0L, count.longValue());
4.注意深层对象为空判断
当一个大对象中存在小对象,需要取出使用时需要层层判断是否为null,否则会报空指针异常
Basic basic =ConfigService.getBasic();
Integer pageLimit = 3;
if (basic != null && basic.getPageLimit() != null) {
pageLimit = basic.getPageLimit();
}
5.关于方法返回值的思考
当一个方法返回一个对象时,当对象未取到,返回为null还是返回为一个初始化的对象需要具体情况具体分析。出现这种情况的原因多出现在调用同事提供的服务及提供给前端的接口上。一般来说,调用同事的服务,需要判断对象是否为null,此时方法返回null即可。返回前端的接口一般需要默认值,则此时返回的对象应返回一个初始化的对象。
6.关于打印日志
打印日志目的在于快速定位异常 ,界定异常发生的范围等。一般在获取基础配置或调用同事提供的服务方法时打印传入的参数及返回的对象,对象一般使用JSON转化,之后通过日志快速定位错误。
7.关于 循环之前的判断是否为null
public static void main(String[] args) {
List<Integer> list = xxxx.find(); //null
//外部调用返回为null 则下面三种方式均会 报 空指针异常
// forEach 调用
list.forEach(System.out::println);
// 增强型for循环
for (Integer integer : list) {
System.out.println(integer);
}
// 空指针
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
//如果需要避免这种情况 则需要在外部调用中返回
//new ArrayList();
List<Integer> list = xxxx.find(); //new ArrayList();
}
8.关于 使用lamda表达式进行循环
注意:判断是否为null
9.关于Get请求
参数请求多的情况下 需要在接口参数中表明可传 参数 目的的为了通过看代码知道所传的参数 禁止使用Map传递参数 避免后续开发人员 不知道你传的是那些参数 导致的麻烦