mybatis.xml配置:
<select id="find" resultType="com.fruitsalesplatform.entity.CommoditiesRetailerVo"> SELECT /*@rowNo := @rowNo + 1 AS rowNo,*/ c.fruitid AS fruitId, c.`name`, c.price, c.locality, o.contractid FROM /*( SELECT @rowNo := 0 ) a,*/ commodities c, middle_tab m, contract o WHERE c.fruitid = m.fruitid and o.contractid = m.contractid </select> <select id="finduser" resultType="com.fruitsalesplatform.entity.RetailerVo"> select r.retailerId,r.name,c.barcode,c.contractid from contract c ,retailer r where c.retailerid = r.retailerid </select>
controller代码:
@Controller public class SelectController extends BaseController { @Autowired SelectService selectService; @RequestMapping("/select/select.action") public String select(Model model,String name){ List<CommoditiesRetailerVo> commoditiesList = selectService.find(name); List<RetailerVo> retailerList = selectService.finduser(name); Map<CommoditiesRetailerVo , RetailerVo> map = new HashMap<>(); for (CommoditiesRetailerVo cvo:commoditiesList){ for (RetailerVo rvo:retailerList){ if (cvo.getContractId().equals(rvo.getContractId())) { map.put(cvo,rvo); } } } LinkedHashMap<CommoditiesRetailerVo , RetailerVo> linkedHashMap = sortMap(map); model.addAttribute("linkedHashMap",linkedHashMap); System.out.println(map); System.out.println("CommoditiesList:"+ commoditiesList); System.out.println("commoditiesList="+commoditiesList.size()); return "/select/select"; } }
/*sortMap排序方法*/ public static LinkedHashMap<CommoditiesRetailerOver,RetailerVo> sortMap(Map<CommoditiesRetailerOver , RetailerVo> map) { LinkedHashMap<CommoditiesRetailerOver,RetailerVo> linkedHashMap = new LinkedHashMap<>(); //将map.entrySet()转换成list进行排序 List<Map.Entry<CommoditiesRetailerOver,RetailerVo>> list = new ArrayList<Map.Entry<CommoditiesRetailerOver,RetailerVo>>(map.entrySet()); //然后通过比较器来实现排序 Collections.sort(list, new Comparator<Map.Entry<CommoditiesRetailerOver,RetailerVo>>() { @Override public int compare(Map.Entry<CommoditiesRetailerOver,RetailerVo> o1, Map.Entry<CommoditiesRetailerOver,RetailerVo> o2) { //升序排序 return o1.getValue().compareTo(o2.getValue()); } }); for (Map.Entry<CommoditiesRetailerOver,RetailerVo> entry : list) { linkedHashMap.put(entry.getKey(), entry.getValue()); } return linkedHashMap; }
entity:在实体类RetailerVo中重写compareto方法:
public class RetailerVo extends PageEntity implements Comparable<RetailerVo>{ private String retailerId; private String name; private String contractId; private String barCode; public String getRetailerId() { return retailerId; } public void setRetailerId(String retailerId) { this.retailerId = retailerId; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getContractId() { return contractId; } public void setContractId(String contractId) { this.contractId = contractId; } public String getBarCode() { return barCode; } public void setBarCode(String barCode) { this.barCode = barCode; } //根据合同号barcode来排序 @Override public int compareTo(RetailerVo o) { if (this.barCode.compareTo(o.getBarCode()) > 0) { return 1; } if (this.barCode.compareTo(o.getBarCode()) < 0) { return -1; } return 0; } }
Dao:
public List<CommoditiesRetailerVo> find(@Param("name") String name); public List<RetailerVo> finduser(@Param("name") String name);
Service:
public List<CommoditiesRetailerVo> find(String name); public List<RetailerVo> finduser(String name);