Mybatis多条件查询

题目
在EmpMapper接口中增加如下方法:
//根据动态条件查询符合条件的员工
List getEmpByCondition(条件类);
 
测试如下功能:
1)请查询 员工所在部门为2,工资在3000-5000的员工。
2)请查询 员工入职时间超过5年以上,工资在3000-5000的员工。

代码示例
EmpMapper.xml:
这里仅列出主要方法代码。



EmpController.java:

    @RequestMapping(value="/getEmpByCondition", method= RequestMethod.POST)
    @ResponseBody
    public Map getEmpByCondition(@RequestParam(value="deptno",required = false) List deptno,
                                                @RequestParam(value="beginHireDate",required = false) String beginHireDate,
                                                @RequestParam(value="endHireDate",required = false) String endHireDate,
                                                @RequestParam(value="hirePerTime",required = false) Integer hirePerTime,
                                                @RequestParam(value="hirePerTimeCon",required = false) String hirePerTimeCon,
                                                @RequestParam(value="beginSalary",required = false) Double beginSalary,
                                                @RequestParam(value="endSalary",required = false) Double endSalary){
        Map conditions = new HashMap<>();
        Map returnMap = new HashMap<>();

        try {
            if(deptno!=null)
                conditions.put("deptno",deptno);
            if(beginHireDate!=null){
                SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
                conditions.put("beginHireDate",format.parse(beginHireDate));
            }
            if(endHireDate!=null){
                SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
                conditions.put("endHireDate",format.parse(endHireDate));
            }
            if(beginSalary!=null)
                conditions.put("beginSalary",beginSalary);
            if(endSalary!=null)
                conditions.put("endSalary",endSalary);
            //入职时间年长
            if(hirePerTime!=null&&hirePerTimeCon!=null){
                conditions.put("hirePerTime",hirePerTime);
                conditions.put("hirePerTimeCon",hirePerTimeCon);
            }
        } catch (ParseException e) {
            e.printStackTrace();
        }

        List elist = employeeService.getEmpByCondition(conditions);
        if(elist.size()!=0){
            returnMap.put("message","findUserByDeptno successfully!");
            returnMap.put("employeeList",elist);
        }else{
            returnMap.put("message","can not find user");
        }
        return returnMap;
    }

你可能感兴趣的:(Mybatis多条件查询)