教做幼儿菜谱菜的网站,天猫商城的商品来源,深圳网站定制价格表,做网站原型图文章目录1. 最简单但性能最差的做法2. 使用group by分组查询#xff0c;将查询结果封装成类3.group by分组查询#xff0c;将结果封装为map。直接封装为map#xff1f;List1. 最简单但性能最差的做法
在逻辑层分多次对数据库进行查询。伪代码如下。
ListString na…
文章目录1. 最简单但性能最差的做法2. 使用group by分组查询将查询结果封装成类3.group by分组查询将结果封装为map。直接封装为mapList1. 最简单但性能最差的做法
在逻辑层分多次对数据库进行查询。伪代码如下。
ListString nameList ;
ListInteger countList;
for(String name: nameList){
countList.add(xxDao.countByName(name));
}map文件如下。
selectselect cout(*) from ** where name#{name};
/select这样写起来很简单但是反复建立与数据库的连接效率极差。
2. 使用group by分组查询将查询结果封装成类
为了提高性能使用数据库中 group by 的语法直接进行分组查询并定义一个类接受查询结果。
//结果类
public class result{
private String key;
private String value;
//省略getter和setter
}map文件如下。
resultMap typecom.**.result idresult…/resultMap
select resuleMapresult
select name as key , count(*) as value group by name;
/select然后再对List进行处理这样效率比第一种方法高但是建立result对象会有一定内存消耗对类进行处理也并不方便。
3.group by分组查询将结果封装为map。
直接封装为map select idgetDepNumMap resultTypejava.util.HashMapselect department_id , count(*) from staff_career_infowhere status enablegroup by department_id;/select想用上面这样的代码直接将查询结果封装到map中是不可以的。返回结果如下可见这样得到的map中将column的名字作为了key结果作为value。而且如果有多个分组也只会返回一个分组。
ListHashMapString,Object
正确的做法如下。
//Dao
ListHashMapString,Object getDepNumMap();//map文件select idgetDepNumMap resultTypejava.util.HashMapselect department_id as key, count(*) as valuefrom staff_career_infowhere status enablegroup by department_id;/select然后再将得到的list 转化为map。这里的方法要自己写。
//转换方法
ListHashMapString, Object list sysStaffCareerInfoDao.getDepNumMap();
MapString, Integer map new HashMap();
if (list ! null !list.isEmpty()) {for (HashMapString, Object hashMap : list) {String key null;Integer value null;for (Map.EntryString, Object entry : hashMap.entrySet()) {if (key.equals(entry.getKey())) {key (String) entry.getValue();} else if (value.equals(entry.getKey())) {//我需要的是int型所以做了如下转换实际上返回的object应为Long。value ((Long)entry.getValue()).intValue();} }map.put(key, value);}
}