wrapper 為包裝類,QueryWrapper查詢包裝類
public List<Map<String, Object>> getWrapper(Map<String, Object> param) {
QueryWrapper<Project> wrapper = new QueryWrapper<>();//新建查詢包裝類
String key = "name";
String where = StringKit.of(param.get(key));
if (!where.isEmpty()) {
wrapper.like(key, where); //模糊匹配key(name)和where(param.get(key))
}
key = "department_id";
where = StringKit.of(param.get(key)); // 未加 if 判斷 傳參中是否包含該 key, 則此 key 為必傳項,不傳或傳空,均直接返回 null
if (where.isEmpty()) {
return null;
}
wrapper.eq(key, where);//查詢 project 中 key(department_id)對應的值與 where 相等的 project
key = "language";//key為language
if (param.containsKey(key)) { //判斷傳參中是否包含該 key ,包含才有后續判斷,不包含則不帶此 key 的篩選條件
where = StringKit.of(param.get(key));//where為key對應的value
if (where.isEmpty()) {
return null;
}
String[] lanArray = where.split(",");//where為逗號分割的字符串,轉化為字符串數組
List<Object> lanList = new ArrayList<>();
for (String lan : lanArray) {
if (StringKit.notEmpty(lan)) {
lanList.add(lan);
}
}
if (lanList.isEmpty()) {
return null;
}
wrapper.in(key, lanList);//查詢 Project 中 key(language)對應的值在 lanList 當中的 project
List<Map<String,Object>> pros = wrapper == null ? new ArrayList<>() : getInfo((mapper.selectList(wrapper)));
return pros;
}
//mapper.selectList(wrapper) 為獲取 按 wrapper 條件查找到的 project 的列表
//mapper.selectCount(wrapper) 為獲取 按 wrapper 條件查找到的 project 的數量