代码优化记录
神龟虽寿,犹有竟时。
一、数据库校验并抛异常优化
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 }
二、Asserts 校验数组是否为空
1 // 判断数组是否为空 2 Asserts.isTrue(ArrayUtils.isNotEmpty(arrays), "arrays 不能為空");
三、hibernate的 in 替代循环添加保存记录
1 /** 2 * hibernate的 in 替代循环添加保存记录 3 */ 4 // 优化后 5 public int change(String department, String... users) { 6 XQLFragment sql = new XQLFragment(); 7 sql.append("update ").append(UserDepartment.class); 8 sql.append(" set departmentId = :department", department); 9 sql.append(" where userId in (:users)", users); 10 return hibernateOperations.update(sql); 11 } 12 13 // 优化前 14 public int change(String department, String... users) { 15 for (String user : users) { 16 sql.append("update ").append(UserDepartment.class); 17 sql.append(" set departmentId = :department", department); 18 sql.append(" where userId = :user", user); 19 return hibernateOperations.update(sql); 20 } 21 }
神龟虽寿
犹有竟时