如果数据在同一张表中,数据没有pID字段,需要分组显示的时候,可以通过反复查询数据库的方式实现,这种方式效率很低,下面分享一种比较高的查询方式
这是整体的方法
- measuringUnitMap=new HashMap<String, List<MeasuringUnit>>(); //实例化一个hashMap
- for(MeasuringUnit mu:this.measuringUnitService.findList()){
- //获取该表的所有数据并遍历数据
- List<MeasuringUnit> mls=measuringUnitMap.get(mu.getUnitCategory()); //根据key查找出相对应的list
- if(mls==null){
- mls=new ArrayList<MeasuringUnit>();
- }
- mls.add(mu);
- measuringUnitMap.put(mu.getUnitCategory(), mls);//把key值和对应的list放入map
- }
接下来就是写入缓存.写入缓存的方法,已封装暂时不展示,最后在页面上展示,遍历map
<select name="detectionUnit" id="detectionUnit">
<#list measuringUnitMap?keys as key>
<optgroup label="<@my.view value="${key}" pvalue="unitType" />">
<#list measuringUnitMap[key] as unit>
<option value=${unit.id!''} <#if (detectionUnit??)!''==unit.id>selected</#if> >
${(unit.name)!''}</option>
</#list>
</optgroup>
</#list>
</select>