• 代码优化记录


    代码优化记录

     

             神龟虽寿,犹有竟时。

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

     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     }

    神龟虽寿

    犹有竟时

  • 相关阅读:
    AcWing 826. 单链表
    AcWing 803. 区间合并
    codeforces Codeforces Round #597 (Div. 2) D. Shichikuji and Power Grid
    球球大作战.exe
    RGB MIXER三原色混色器的制作
    125. 验证回文串
    110. 平衡二叉树
    112. 路径总和
    111. 二叉树的最小深度
    100. 相同的树
  • 原文地址:https://www.cnblogs.com/taojietaoge/p/15853508.html
Copyright © 2020-2023  润新知