MyBatis传参问题

来源:互联网 发布:中国的网络环境 编辑:程序博客网 时间:2024/05/16 11:02

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>
原创粉丝点击