首页 > 技术文章 > 代码优化记录

taojietaoge 2022-03-12 15:06 原文

代码优化记录

 

         神龟虽寿,犹有竟时。

 

一、数据库校验并抛异常优化

 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     }

 

 

 

神龟虽寿

犹有竟时

 

推荐阅读