MyBatis传参问题

1,单个参数

boolean deleteByUserId(Long userId);

<!--   通过userId删除用户所有特殊权限 -->
  <delete id="deleteByUserId" parameterType="java.lang.Long" >
    delete from o_user_group_rel_t
    where USER_ID = #{userId,jdbcType=BIGINT}
  </delete>

其中方法名和id必须保持一致,#{}中的参数名与方法中的参数名一致。

2,多参数传值(map(单值,list))

//1.查询用户是否有角色,如果有删除以前的用户角色中间数据
long userId = Long.parseLong((String)map.get("userId"));
userGroupRelMapper.deleteByUserId(userId);
@SuppressWarnings("unchecked")
List<Long> list = (List<Long>)map.get("goupIds");
if(list.size()==0){
    return true;
};
//2.用户授权
return userGroupRelMapper.accessSpecialOauth(map);

boolean accessSpecialOauth(Map<String, Object> map);
<!--   给用户赋予特殊权限 -->
  <insert id="accessSpecialOauth" parameterType="map" >
    insert into o_user_group_rel_t (USER_ID,GROUP_ID)
    values
       <foreach collection="goupIds" item="item" index="index" separator="," >  
        (#{userId},#{item})  
       </foreach>  
   </insert>

3, 多值传参也可以用索引

//查询特殊权限
List<Organizations> getSpecialRolesList(long companyId, long currentUserId);

<select id="getSpecialRolesList" resultMap="BaseResultMap" parameterType="java.lang.Long" >
        SELECT DISTINCT
        g.ORG_ID,
        g.ORG_NAME
    FROM
        p_permissionset_t p
    LEFT JOIN o_organizations_t g ON p.GROUP_ID = g.ORG_ID
    WHERE
        g.ORG_ID IN (
            SELECT
                company_id
            FROM
                o_user_t
            WHERE
                USER_ID IN (
                    SELECT DISTINCT
                        p.create_user
                    FROM
                        p_permissionset_t p
                    LEFT JOIN o_organizations_t g ON p.GROUP_ID = g.ORG_ID
                    WHERE
                        p.BOOKINGTICKET = '1'
                    AND g.ORG_ID = #{0}
                    AND p.user_id = #{1}
                )
        )
    AND ORG_ID != #{0}
  </select>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值