- new ArrayList(.size())时确定list数量,指明list大小,但是确保()里的.size()不是null
-
List<AuthPriorityDTO> result = new ArrayList<>(authPriorityDOList.size());
-
- 判断String类型的值是不是空时用StringUtils.hasText(String phone)
- 前端传过来String类型的值传给Service层或者mybatis时一定要做.trim()
-
//存储订单号 if (StringUtils.hasText(rpcSelectCancelReasonAo.getOrderId().trim())) { orderId.add(rpcSelectCancelReasonAo.getOrderId().trim()); }
-
- 通过mybatis返回的是对象时做null判空处理,返回的是List时,一定不为空,做.size()为0的判断
- List list = new ArrayList();list一定不为null,但list.size()=0
- 前端传来List时,一定要做相应的去重处理,List<实体>有必要根据对应的字段去重,去重一般使用set去重或者jdk8的distinct()去重
- 写完接口,如有空余时间,先自己使用Spring Boot的Test做自测,部署到dev上的时候一定要查看控制台输出,确定部署的服务正确和部署成功,有事儿一定要找运维
- 和前端联调时一定要注意接口类型、字段名称、字段类型,保证少一个失误
- 接口中参数是数组时可以写成(数组的写法 String... phone)实际是String[] phone
- 在容易报错的地方加try catch
- 添加索引
-
alter TABLE offlineuser ADD INDEX `idx_userPhone_userName_licenseNumber_callPhoneTime` ( `userPhone`, `userName`, `licenseNumber`, `callPhoneTime` )
-
- select <inclue refid = "">
-
select <include refid="Base_Column_List"/> from drivingdriver where driverNo = #{driverNo}
-
- 通用mapper批量查询in
-
Example example = new Example(DrivingOrderDo.class); Integer[] unfinishedStatus = new Integer[]{OrderAttributeConst.ORDER_STATUS_DRIVERTAKEORDER , OrderAttributeConst.ORDER_STATUS_SUCCESSAPPIONT , OrderAttributeConst.ORDER_STATUS_CAROWNERWAITTING , OrderAttributeConst.ORDER_STATUS_DRIVERREADY , OrderAttributeConst.ORDER_STATUS_DRIVING}; example.createCriteria().andEqualTo("driverId", userId).andIn("status", Arrays.asList(unfinishedStatus)); return drivingOrderMapper.selectByExample(example);
-
- 复制实体的值到另一个对象用Clone()或者BeanUtils.copyProperties(source,target)【如果用的是Spring的,则前source后target】,copy时有可能出错,
-
NoticeDO notice = noticeDTO.clone(NoticeDO.class);
-
- 获取当前时间用System.currentTimeMills()
-
Long currentTime = System.currentTimeMillis() / 1000; notice.setGmtCreate(currentTime); notice.setGmtModified(currentTime);
-
- 分页查询中mybatis动态sql中的模糊查询拼接
-
<if test="title !=null "> AND title like concat('%', #{title}, '%') </if>
-
- 动态sql中Date时间转成Long类型的时间戳进行时间比较
-
<if test="noticeStatus==0"> AND startTime > UNIX_TIMESTAMP(now()) </if> <if test="noticeStatus==1"> AND startTime <= UNIX_TIMESTAMP(now()) AND expireTime >= UNIX_TIMESTAMP(now()) </if> <if test="noticeStatus==2"> AND expireTime < UNIX_TIMESTAMP(now()) </if>
-
- 时间是Long类型时间戳,范围查询,通用mapper
-
Example example = new Example(DrivingOrderDo.class); if (type == OrderAttributeConst.CAROWNER) { example.createCriteria().andEqualTo("carOwnerId", carOwnerIdOrDriverId) .andLessThan("createTime", createTime); } else { example.createCriteria().andEqualTo("driverId", carOwnerIdOrDriverId) .andLessThan("createTime", createTime); }
-
- 时间是Long类型的范围查询,用通用mapper
-
Example example = new Example(DrivingOrderBillDo.class); example.createCriteria() .andBetween("payTime", rpcAo.getPayStartTime(), rpcAo.getPayEndTime());
-
- 多用Option.OfNullable()判空
-
String driverOrgName = Optional.ofNullable(resolveDriverOrgName(rpcGetDrivingOrderListVo.getDriverOrganization())).orElse("--");
-
- 分页查询时,判断pageSize和currentPage是否为空,不为空设置默认的大小
- @Builder注解与通用mapper的连用
-
if (currentTime - noticeDO.getStartTime() > 0 && currentTime - noticeDO.getExpireTime() < 0) { NoticeDO build = NoticeDO.builder().noticeStatus(operator).build(); Example example = new Example(NoticeDO.class); example.createCriteria().andEqualTo("title", noticeDO.getTitle().trim()); this.noticeMapper.updateByExampleSelective(build, example); this.clearCityNoticeCache(noticeDO.getProvinceCode(), noticeDO.getCityCode()); } AuthPriorityDO priorityDO = authPriorityMapper.selectOne( AuthPriorityDO.builder().id(1L).build()); noticeMapper.updateByPrimaryKeySelective( NoticeDO.builder() .id(id) .expireTime(currentTime) .startTime(currentTime) .build());
-
- 多用@Builder注解创建对象
-
NoticeDO noticeDO = noticeMapper.selectOne( NoticeDO.builder() .id(id) .build()); return noticeDO.clone(NoticeDTO.class);
-
- 分页查询,如果查询结果为空,则最好不要返回null,返回.size()=0的ArrayList()
-
Long carOwnerId = getCarOwnerIdByPhone(rpcAo.getUserPhone()); if (carOwnerId == null || carOwnerId <= 0) { pageModel.setBody(new ArrayList<>()); result = BaseResponse.returnResultSuccess(pageModel); return result; }
纯属个人看,
-
开发中遇到的坑
最新推荐文章于 2023-03-04 13:04:51 发布