mybatis多条件查询

在mapper。java文件中:List<Admin> selectByLimit(Map<String,Object> paramMap);

在mapper。XML文件中:

<select id="selectByLimit" resultMap="BaseResultMap">
        select
        <include refid="Base_Column_List" />
        from tb_admin
        <if test="province != null">
        where role_id IN(
            SELECT role_id FROM tb_role where 
                   province = #{province,jdbcType=VARCHAR} 
            <if test="city != null">
                AND city = #{city,jdbcType=VARCHAR}
                <if test="area != null">
                AND    area = #{area,jdbcType=VARCHAR}
                </if>
            </if>
            )
        </if>
        <if test="start != null and end != null">
            limit #{start,jdbcType=INTEGER},#{end,jdbcType=INTEGER}
        </if>
    </select>

 

在service.java中:List<Admin> getAdminList(Integer start, Integer end, String province, String city, String area);

在serviceImpl。java中:

public List<Admin> getAdminList(Integer start, Integer end, String province, String city, String area) {
        Map<String, Object> params = new TreeMap<>();
        if(start != null) {
            params.put("start", start);
        }
        if(end != null) {
            params.put("end", end);
        }
        if(StringUtil.isNotEmpty(province)) {
            params.put("province", province);
            if(StringUtil.isNotEmpty(city)) {
                params.put("city", city);
                if(StringUtil.isNotEmpty(area)) {
                    params.put("area", area);
                }
            }
        }
        return adminMapper.selectByLimit(params);
    }

在controller。java中:

@RequestMapping(value = "/getAdminByList", method = RequestMethod.POST, produces = "application/json; charset=utf-8")
    public Map<String,Object> getAdminByList(@RequestBody Map<String, String> params) {
        Map<String,Object> map = new TreeMap<>();
        try {
            String start = params.get("start");
            String end = params.get("end");
            String username = params.get("username");
            Role role = oilStationService.getMenus(username);
            String province = role.getProvince();
            String city = role.getCity();
            String area = role.getArea();
            Map<String,Integer> paramMap = new TreeMap<>();
            if(StringUtil.isNotEmpty(start)) {
                paramMap.put("start", Integer.valueOf(start));
            }
            if(StringUtil.isNotEmpty(end)) {
                paramMap.put("end", Integer.valueOf(end));
            }
            
            
            List<Admin> adminList = adminService.getAdminList(paramMap.get("start"), paramMap.get("end"), province, city, area);
            int count = adminService.getCount();
            map.put("code", 200);
            map.put("msg", "");
            map.put("count", 1);
            map.put("data", adminList);
            
        } catch (Exception e) {
            e.printStackTrace();
        }
        return map;
    }

 

需要注意的是,因为有些值前端可能传null,有可能传正确的值,另外还需要对请求参数转换形式,所以可以先判断值是否为空,如果不为空,就把值放到map中,然后使用map作为请求参数。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

iamlzjoco

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值