代碼優化記錄
神龜雖壽,猶有竟時,
一、資料庫校驗并拋例外優化
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 }
神龜雖壽
猶有竟時
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/441921.html
標籤:其他
