在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作为请求参数。

mybatis多条件查询相关推荐

  1. MyBatis框架学习笔记04:利用MyBatis实现条件查询

    文章目录 一.查询需求 二.打开MyBatisDemo项目 三.对学生表实现条件查询 (一)创建学生映射器配置文件 (二)在MyBatis配置文件里注册学生映射器配置文件 (三)创建学生映射器接口 ( ...

  2. SSM整合 mybatis多条件查询与分页

    多条件查询与分页: 通过页面的houseName.floorage获取值传到前端视图(HouseSearchVO)实体类中的houseName,floorage建立houseSearchVO对象. 通 ...

  3. Mybatis Plus条件查询

    QueryWrapper 说明:继承自 AbstractWrapper ,自身的内部属性 entity 也用于生成 where 条件及 LambdaQueryWrapper, 可以通过 new Que ...

  4. casewhen多条件查询_Mybatis(三)- MyBatis 多条件查询和模糊查询实例

    步骤1:先运行,看到效果,再学习步骤2:模仿和排错步骤3:在前一步的基础上进行步骤4:模糊查询步骤5:多条件查询 步骤 1 : 先运行,看到效果,再学习 老规矩,先下载下载区(点击进入)的可运行项目, ...

  5. mybatis多条件查询处理方案(查询条件为数据库字段非传递参数)

    问题说明     关于多条件查询,大部分遇到的场景是根据传递参数的不同查询符合参数字段的数据信息.mybatis中使用频率最高的是if标签.但if标签中的test属性只支持传递参数进行判断是否相等,不 ...

  6. mybatis 多条件查询、in查询

    当参数有值,添加条件查询,附带一个字符串的in查询 resultMap: <resultMap id="eventMap" type="com.szkingdom. ...

  7. MyBatis : Example 条件查询 in 用法

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 只是记录下. Example example = new Example(UserxxxLog.cl ...

  8. MyBatis关联查询、多条件查询

    MyBatis关联查询.多条件查询 1.一对一查询 任务需求; 根据班级的信息查询出教师的相关信息 1.数据库表的设计 班级表: 教师表: 2.实体类的设计 班级表: public class Cla ...

  9. Mybatis基础:增删改查、模糊查询、多条件查询

    Mybatis基础:增删改查.模糊查询.多条件查询http://www.bieryun.com/3132.html 1.新建测试数据库,根据实体类属性创建 2.实体类 [java] view plai ...

最新文章

  1. 隆重介绍!一款新型基于姿势的人像实例分割框架
  2. php取得客户端信息类
  3. centos7 yum 安装 redis
  4. 650 storm 铃木v_铃木公升级V缸拉力V-strom 1050国内公布!高配版预售价14.98万
  5. php 截取字符串的方法,php截取字符串的方法介绍
  6. 动态规划——坐标型位操作型
  7. Python--day60--一个简单(不完整)的web框架
  8. ApplicationContext容器的设计原理
  9. php如何编造简历,在简历里编造内容需要注意哪些问题?
  10. Ansroid系统(262)---MTK安卓sim卡相关源码分析
  11. 信息系统项目管理01——信息化和信息系统
  12. Linux GPIO键盘驱动开发记录_OMAPL138
  13. 滴滴开源夜莺 Nightingale:企业级监控解决方案
  14. row_number()over函数的使用(转)
  15. mac windows蓝牙问题
  16. maven的安装以及配置--第一章
  17. 中国芯热情高涨 步履也更为坚实 近期我国多家企业再获“芯”突破
  18. 手把手教你学51单片机_第 一、二章
  19. 单片机定时器实验报告C语言,51单片机定时器实验报告.doc
  20. python代码检查工具(静态代码审查)

热门文章

  1. 如何将Arraylist转成string输出?
  2. 变长结构体的临时笔记
  3. controller需要捕获异常吗_Spring之Controller异常处理
  4. centos7 怎么封装自己的镜像_「10」-CentOS7.5(1804)
  5. amd一键超频怎么用_头条信息流“一键起量”工具怎么用?经验分享
  6. android头部固定悬停,Android开发上滑悬停且头部可刷新
  7. centos安装python3小白_在Linux CentOS7 下安装 python3
  8. babel css3新特性_2018年面试前端总结
  9. 优化算法 sklearn lr
  10. 读写分离怎么实现_项目中如何实现读写分离?怎么配置?