代码优化记录
代码优化记录
神龟虽寿,犹有竟时。
一、数据库校验并抛异常优化
1 /**
2 * 校验:这辆车是否是他的(一个人可以有多辆车),不是直接抛异常
3 */
4 public void edit(UserPayload payload) {
5 // 其他业务逻辑操作
6 // 校验方式一
7 checkStyleOne(payload.getUserId(), payload.getCarOwnerId());
8 // 校验方式二,使用Asserts 的isTrue
9 isTrue(!checkStyleTwo(payload.getUserId()), "车辆与车主匹配不一致");
10 // 其他业务逻辑操作
11 }
12
13 // 优化前:
14 public Boolean checkStyleOne(String userId, String carOwnerId) {
15 // 此人名下的所有车
16 List<Car> list = carService.getByOwnerId(carOwnerId);
17 if (list.size() > 0) {
18 Car car = list.get(0);
19 if (!car.getUserId().equals(userId)) {
20 throw new APIException("车辆与车主匹配不一致");
21 }
22 }
23 return true;
24 }
25
26 // 优化后:
27 public boolean checkStyleTwo(String userId) {
28 XQLFragment sql = new XQLFragment();
29 sql.append("select count(1) from ").append(Car.class);
30 sql.append(" where id = :id", userId);
31 return hibernateOperations.count(sql) > 0;
32 }


