Mybatis 你可以通过这样 把传过来的参数集合变成一张临时表

SELECT tab1.val from
<foreach collection="list" index="index" item="item" open="(" separator="union" close=")">
     select #{item.dormUserPin} as val
</foreach>
tab1
WHERE tab1.val not in (select hu.pin from hr_userinfo hu)

注意到没有,其实就是简单的拼接 用的union 记录一下;

(2)这个也需要记录一下 用来卡权限的

SELECT COUNT(1)
    from hr_userinfo hu
    JOIN dorm_user_info dui on dui.dorm_user_pin = hu.pin
    JOIN dorm_structure ds on ds.dorm_id =dui.dorm_structure_id
  where hu.pin in(SELECT dorm_user_pin FROM dorm_user_info)
  <if test="dorm_structure_id!=null and dorm_structure_id!=''">
       and (dui.dorm_structure_id=#{dorm_structure_id} or dui.dorm_structure_id in
      (select ds1.dorm_id from dorm_structure ds1 where ds1.dorm_parent_id = #{dorm_structure_id}))
  </if>
  <if test="name!=null and name!=''">
    and hu.`name` like CONCAT('%','#{name}','%')
  </if>
  <if test="pin!=null and pin!=''">
    and hu.pin=#{pin}
  </if>
  <if test="userName !=null and userName !=''">
        and  dui.dorm_user_dept_id in (select hd.dept_id from hr_dept hd
        join sys_role_dept srd on hd.dept_id = srd.dept_id
        join sys_role sr on srd.sys_role_id = sr.id
        join sys_user_role sur on sr.id = sur.sys_role_id
        join sys_user su on sur.sys_user_id = su.id
        where su.name = #{userName})
 </if>
MyBatis 中,查询传集合参数可以使用以下两种方式: 1. 使用 foreach 标签 使用 foreach 标签可以遍历集合参数中的每个元素,将元素的值赋给 SQL 语句中的参数。例如,我们可以使用如下的 SQL 语句查询多个用户的信息: ``` <select id="getUserList" resultType="User"> SELECT * FROM user WHERE id IN <foreach collection="ids" item="id" open="(" separator="," close=")"> #{id} </foreach> </select> ``` 在上述 SQL 语句中,我们使用了 foreach 标签对集合参数 ids 进行了遍历,将遍历得到的元素 id 的值赋给了 SQL 语句中的参数 #{id}。其中,open、separator、close 属性分别指定了 SQL 语句中的括号、分隔符等。 在 Java 代码中,我们可以将集合参数 ids 以 List 或者数组的形式传递给 MyBatis: ``` List<Integer> ids = Arrays.asList(1, 2, 3); List<User> userList = sqlSession.selectList("getUserList", ids); ``` 在上述 Java 代码中,我们将 ids 以 List 的形式传递给 MyBatisMyBatis 会自动使用 foreach 标签将集合参数中的元素传递给 SQL 语句中的参数。 2. 使用 @Param 注解 另一种方式是使用 @Param 注解指定集合参数的名称,然后在 SQL 语句中直接使用该名称。例如,我们可以使用如下的 SQL 语句查询多个用户的信息: ``` <select id="getUserList" resultType="User"> SELECT * FROM user WHERE id IN <foreach collection="ids" item="id" open="(" separator="," close=")"> #{id} </foreach> </select> ``` 在 Java 代码中,我们可以使用 @Param 注解指定集合参数的名称为 ids: ``` List<Integer> ids = Arrays.asList(1, 2, 3); List<User> userList = sqlSession.selectList("getUserList", @Param("ids") ids); ``` 在上述 Java 代码中,我们使用 @Param 注解指定了集合参数的名称为 ids,然后将 ids 以 List 的形式传递给 MyBatisMyBatis 会自动将集合参数传递给 SQL 语句中的参数,从而实现查询传集合参数的功能。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值