前端传输数组条件查询,myslq使用in

2023-11-03

mysql语句使用in条件查询,从前端获取数组

1、post请求体中的json对象

@Data
public class UserSearchParam {
    String userName;
    @NotNull
    Integer pageNum;
    @NotNull
    Integer pageSize;
    // 权限表ID
    Integer[] roleIds;
}

2、控制层接收数据

    @PostMapping("getUserListByRoles")
    public Object getInerUserList(@Valid @RequestBody UserSearchParam params) {
		List<UserInfoDetailVo> userList = userInfoDetailService.getUserListByRoleIds(params);
		
        return userList;
    }

3、业务层进行数据处理

将名字进行模糊查询修改,数组修改为map类型传给mapper接口

    @Override
    public List<UserInfoDetailVo> getUserListByRoleIds(UserSearchParam params) {
        params.setPageNum((params.getPageNum() - 1) * params.getPageSize());
        if (StringUtils.hasText(params.getUserName())) {
            params.setUserName("%" + params.getUserName() + "%");
        }
        Integer[] roleIds = params.getRoleIds();
        Map map = new Hashtable();
        for (int i = 0; i < roleIds.length; i++) {
            map.put(i,roleIds[i]);
        }
        return userInfoDetailMapper.selectUserListByRoleIdsPage(params, map);
    }

4、Mapper定义接口

  List<UserInfoDetailVo> selectUserListByRoleIdsPage(@Param("params") UserSearchParam params, @Param("roleIds") Map map);

5、mybatix对应的xml文件

<select id="selectUserListByRoleIdsPage" resultType="com.example.demo.vo.UserInfoDetailVo">
        select
        user.id as id,
        user.user_name as userName,
        user.user_phone as userPhone,
        user.create_time as createTime,
        user.auth_not as authNot,
        user_role.role_id as roleId,
        user_role.role_name as userType,
        user.account_status as accountStatus,
        user.img_url as imgUrl,
        user.real_idcard as realIdcard,
        user.dept_id as deptId,
        dept.dept_name as deptName
        from
        (yuan.user left join yuan.dept on user.dept_id = dept.dept_id), yuan.user_role
        where user.user_role=user_role.role_id
        <if test="params != null and roleIds.size() > 0 ">
            and user_role.role_id in
            <foreach
                    collection="roleIds"
                    item="roleId"
                    open="("
                    separator=","
                    close=")">
                #{roleId}
            </foreach>
        </if>
        <if test="params != null and params.userName != ''">
            and user.user_name like #{params.userName}
        </if>
        <if test="params != null and params.deptId != null">
            and user.dept_id = #{params.deptId}
        </if>
        limit #{params.pageNum}, #{params.pageSize};
    </select>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

前端传输数组条件查询,myslq使用in 的相关文章

随机推荐

  • markdown语法介绍

    目录 动态目录 toc 文章目录 目录 一 标题和文本 1 使用 和 标记一级和二级标题 2 使用 号标记 3 换行 二 文字标记和插入图片 链接 1 插入链接 2 插入图片 3 文字标记 设置文字 删除线 下划线 上标 下标 注释 4 e
  • Flip card 卡片翻转效果

    鼠标滑过 卡片翻转 如果想要点击卡片翻转的话就把 hover 改成 hover 然后自己添加点击事件 添加 class hover
  • Java序列化

    Java序列化 原理图 0bjectoutputstream java io 0bjectoutputstream extends outputstreamobjectoutputstream 对象的序列化流 作用 把对象以流的方式写入到文
  • 以太坊合并后,Layer2 何去何从?

    转载原文链接 http www btcwbo com 5671 html 在2022年以太坊开发者峰会上 联合创始人威尔基说 以太坊预计将信号标准链与主网络合并 通过8月份的TheMerge 合并 升级 这样以太坊就可以证明 POS 共识算
  • 英雄联盟-经验砖块

    作为一个LOL老玩家 如果说对游戏细节把握不到位 这是说不过去的 我们时常说道发育为重 那么发育包括等级和装备 我们是不是应该更精细的把我等级呢 今天我们来探究一下 赖线从小兵身上我们能获得多少经验等级 问题1 每个小兵有多少经验值呢 近战
  • 勒索软件攻击防护中的6个常见错误

    勒索软件攻击已经成为影响所有行业和组织的大问题 考虑到这些攻击可能对企业造成的影响 安全专业人员正在尝试以各种方式保护企业的网络 应用和数据 然而 但随着勒索攻击威胁形势的不断变化 很多错误的做法可能会阻碍企业勒索防护计划的有效执行 并使组
  • 最详细的Transformer讲解,Attention Is All You Need

    前言 Attention Is All You Need Google Brain 引用量 30255 1 3 ResNet 贡献 Transformer 是第一个完全依赖自注意力来计算其输入和输出表示而不是使用序列对齐的RNN和CNN 一
  • C++标准库头文件(工具库->csetjmp)

    参考网址 https zh cppreference com w cpp header https www runoob com cplusplus cpp standard library html 工具库 csetjmp 保存执行语境的
  • Android-Fragment详解

    Fragment是Android最常使用的控件之一 一般情况下 我们会在首页使用到 有的小伙伴也会单Activity和多Fragment的App 我总结了一下我了解的Fragment知识 希望对看这篇文章的小伙伴有所帮助 Fragment的
  • USB:Type-A、Type-B、Type-C、miniUSB、microUSB接口类型区分

    通用串行总线 universal serial bus USB 自推出以来 成功替代串口和并口 已经成为计算机和各种设备不可或缺的接口 USB的优点不用多说 网上有很多 今天主要小结一下USB的各种接口类型 避免被各种各样的USB名字搞晕
  • SQL调优案例1

    SQL语句的执行顺序 1 LIMIT 语句 分页查询是最常用的场景之一 但也通常也是最容易出问题的地方 比如对于下面简单的语句 一般 DBA 想到的办法是在 type name create time 字段上加组合索引 这样条件排序都能有效
  • 遥感影像识别-利用较大数据集训练

    回顾 经过前两次的思考 最终还是回到最初的想法上来 利用大量比较合理的电子地图进行模型的训练 看能否产生较好的效果 前两次的博文链接如下 遥感影像识别 制作数据集 遥感影像识别 训练策略 本次训练所使用的数据集 地域覆盖了全国几个主要的城市
  • Elasticsearch入门笔记

    ES入门笔记 1 概述 1 1 什么是全文检索 1 2 es的应用场景 1 3 参考资料 2 核心概念 3 进阶 3 1 集群 3 1 1 单节点 3 1 2 双节点 故障转移 3 1 3 三节点 水平扩容 3 1 4 应对故障 3 2 路
  • jdk1.8 Lambda 实战

    我们用常用的实例来感受 Lambda 带来的便利 替代匿名内部类 过去给方法传动态参数的唯一方法是使用内部类 比如 1 Runnable 接口 new Thread new Runnable Override public void run
  • 【HJ40】统计字符

    题目描述 输入一行字符 分别统计出包含英文字母 空格 数字和其它字符的个数 本题包含多组输入 数据范围 输入的字符串长度满足 1 1000 输入描述 输入一行字符串 可以有空格 输出描述 统计其中英文字符 空格字符 数字字符 其他字符的个数
  • CSS字体

    CSS字体属性定义文本中的字体 指定字体 font family属性 指定在文本中使用的字体系列 如 body font family sans serif 从sans serif字体系列中选择一个字体 并将其应用到body元素中 CSS字
  • 关于idea中提交svn时一直显示performing VCS refresh

    vue前端项目会自动生成node modules文件夹 在首次上传版本到svn的时候 不要提交node modules文件夹 否则node modules文件也会在版本控制中 那么在npm install之后 灾难就来了 Version C
  • 21年新版kali安装

    第一步 官网下载kali系统镜像文件 官网地址 www kali org 访问kali官网 点击上方GET KALI 然后点击Bare Metal 旁边的Virtual Machines是专门为虚拟机设计的 相比更为轻量 安装过程也比较简单
  • 配置Dot1q终结子接口实现跨设备VLAN间通信示例

    示例图 一 实验目的 1 配置Dot1q终结子接口实现跨设备VLAN间通信示例 二 注意事项 1 Dot1q终结子接口和QinQ终结子接口不支持透传不带VLAN Tag的报文 收到不带VLAN Tag的报文会直接丢弃 2 由于三层以太网子接
  • 前端传输数组条件查询,myslq使用in

    mysql语句使用in条件查询 从前端获取数组 1 post请求体中的json对象 Data public class UserSearchParam String userName NotNull Integer pageNum NotN