configuration: map-underscore-to-camel-case: false cache-enabled: true #配置的缓存的全局开关 lazyLoadingEnabled: true #延时加载的开关 multipleResultSetsEnabled: true #开启的话,延时加载一个属性时会加载该对象全部属性,否则按需加载属性 log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #打印sql语句,调试用
<collection fetchType="lazy" property="orderCarrierList" column="id" select="com.mapper.OrderCarrierMapper.listOrderCarrierAfterPlaceOrder"
javaType="List" ofType="com.entity.OrderCarrier"/>
Long orderCompanyId = (Long)paramMap.get("id"); List<OrderCompany> companyOrderList = this.baseMapper.getCompanyOrderList(paramMap); ListIterator listIterator = companyOrderList.listIterator(); while (listIterator.hasNext()){ OrderCompany orderCompany = (OrderCompany)listIterator.next(); Long id = orderCompany.getId(); if(orderCompanyId != null && Long.compare(orderCompanyId,id) == 0){ //仅仅查询指定orderCarrierId的运单数据 }else { //否则不查询运单 orderCompany.setOrderCarrierList(null); } orderCompany.setOrderProductTypeName(ProductCategory.getNameByValue(orderCompany.getOrderProductType())); orderCompany.setOrderStateName(OrderStateEnum.getNameByValue(orderCompany.getOrderState())); }
测试:
不传orderCarrierId时:
传orderCarrierId时:
总结:
这个配置我配了半天延迟加载一致失效,后面我采用 setxx(null) 的方法 , 解决了延迟加载的问题(只要能解决问题就行了)
当不传orderCarrierId是只查询订单(1次查询)
当传orderCarrierId时,在查询订单的时候,会查询指定orderCarrierId的运单信息(2次查询)