本文共 6235 字,大约阅读时间需要 20 分钟。
最近几天闲下来,主动把之前的代码优化了一下:)
1 String eventId = ""; 2 String aTime = ""; 3 for (UserEvent event : userEventList) { 4 eventId = event.getEventId(); 5 6 // 获取业务B信息 7 ListlistB = mapperB.selectBInfoByEventId(eventId); 8 event.setListB(listB); 9 10 // 获取业务C信息11 List listC = mapperC.selectCInfoByEventId(eventId);12 event.setListC(listC);13 14 // 查看是否有业务B处理15 EntityB entityB = mapperB.selectBInfoByPrimary(phone, eventId);16 event.setIsActionB(null == entityB ? "false" : "true");17 18 // 获取业务A和用户信息19 User userInfo = mapperA.selectEventUserInfoByEventId(eventId);20 if(null != userInfo){21 aTime = userInfo.getTime();22 event.setTime(aTime == null ? "" : sdfMd.format(sdfYmd.parse(aTime)));23 event.setUserInfo(userInfo);24 }25 }
1 11 26 SELECT27 U.name,28 U.picId,29 A.time30 FROM table_a A31 LEFT JOIN user U ON U.phone = A.phone32 WHERE A.event_id = #{eventId}33
int eventSize = userEventList.size(); ListeventIds = new ArrayList (); // 如果考虑去掉重复数据,可以使用集合Set,但是作为Mybatis的输入参数,最后还是需要将Set转化为List。 // 此处直接使用List,因为在业务上排除了重复数据的可能性。 for (int i = 0; i < eventSize; i++) { eventIds.add(userEventList.get(i).getEventId()); } Map paramsMap = new HashMap (); paramsMap.put("eventIds", eventIds); paramsMap.put("phone", phone); List eventInfoList = eventMapper.selectUserEventInfo(paramsMap); // 将查询结果转化为Map存储,方便调用 Map eventInfoMap = new HashMap (); for(UserEvent event : eventInfoList){ eventInfoMap.put(event.getEventId(), event); } UserEvent newEvent = null; String aTime = null; for(UserEvent event : roadEventList){ // 从查询结果Map中取出补充信息,保存到原UserEvent对象中 newEvent =eventInfoMap.get(event.getEventId()); if(null != newEvent ){ aTime = newEvent.getTime(); event.setTime(aTime == null ? "" : sdfMd.format(sdfYmd.parse(aTime ))); event.setIsActionB(newEvent.getIsActionB() == null ? "false" : newEvent.getIsActionB()); event.setUserInfo(newEvent.getUserInfo()); event.setListB(newEvent.getListB()); event.setListC(newEvent.getListC()); } }
1. 复杂对象的映射解析
2. foreach标签的使用
http://www.cnblogs.com/quiet-snowy-day/p/6166340.html