- 图1代码段实现了用户信息的查询(包括获取到根据部门分组的用户数量),涉及到的知识点有:
①java注解的使用。@Override注解说明该方法是接口同名抽象方法的重写(具体实现);@Transactional(rollbackFor = Exception.class)使该query方法中出现该数据库事务时会回滚。
②java8流stream的使用。userList.stream()先将集合userList转化成流,然后可以通过collect()/filter()等方法对流进行收集、过滤等操作。相对于for循环来说,流的优势在于代码比较简洁,更专注于如何实现而非怎么做。
③TreeMap与HashMap的区别:HashMap顺序随机,TreeMap默认以key升序排序。
④Optional类的使用。
@Override
@Transactional(rollbackFor = Exception.class)
public Map<String,Object> query(UserDto qo) {
Map<String,Object> queryMap = new HashMap<>();
List<UserDto> userList = userMapper.queryComplianceStaffs(qo);
// 获取按psDeptId分组统计的结果,以TreeMap的格式收集流
TreeMap<String,Long> countMap = userList.stream().collect(Collectors.groupingBy(UserDto::getPsDeptId, TreeMap::new, Collectors.counting()));
countMap.forEach((k,v)->{
Optional<UserDto> first = userList.stream().filter(userDTO -> userDTO.getPsDeptId().equals(k)).findFirst();
first.get().setRowspanCount(v);
});
queryMap.put("queryResult",userList);
return queryMap;
}
图1
2.图2代码段涉及到的知识点:
①jquery选择器:(this)
②jquery方法:(this).val()
③js方法:each()方法遍历元素
$("[name='deptSortNo']").each(function(){
if ($(this).attr('psDeptId') == formData.body["psDeptId"]){
formData.body["deptSortNo"] = $(this).val();
}
})
图2
- 常见sql句法错误:
①### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 't.ORG_ID' in 'where clause'
即where分句中的org_id字段在数据库表t中不存在。