MyBatis中多个接口参数的用法

目前列举的接口方法的参数只有一个,参数的类型可以分为两种,一种是基本类型,另一种是JavaBean。当参数是一个基本类型时,它在xml中对应的sql语句只会使用一个参数,例如delete方法(deleteById(user)),当它是JavaBean类时,它在xml文件中对应的sql语句会有多个参数,例如insert、update方法。
当参数较少时,可采用两种方式,一种是Map类型作为参数,或者使用@param注解。其中Map方法就是在Map中通过key来映射xml中sql使用的参数值的名字,value用来存放参数值,需要多个参数时,通过Map的key-value方法传递参数值,下面介绍通过@param方法注解的方法

前面的例子都是将多个参数合并到一个JavaBean中,并使用这个JavaBean作为接口的方法,如SysUser … ,这个适用于大量参数的情况,下面这个是适用于较少参数的情况

例、根据用户id和角色的enabled状态获取用户角色

@param usedId
@param enabled
@return 
...
List<SysRole> selectRoleByUserIdAndRoleEnabled(Long userId ,Integer enabled);

在UserMapper.xml中添加代码

<select id ="selectRoleByUserIdAndRoleEnabled"  
     resultType ="tk.mybatis.simple.model.SysRole">
 select 
    r.id,
    r.role_name roleName,
    r.enabled,
    r.create_by createBy,
    r.create_time createTime,
    from sys_user u
    inner join sys_user_role ur on u.id =ur.user_id
    inner join sys_role r on ur.role_id =r.id
    where u.id =#{userId} and r.enabled =#{enabled}
    </select>

此时调用查询方法会报错,因为参数没有注解,就会报错,可用的参数是param1、param2、0、1这些MyBatis根据参数位置自定义的名字,想要获取自己取的参数名,就要在参数前加注解,下面是更改后的代码

@param usedId
@param enabled
@return 
...
List<SysRole> selectRoleByUserIdAndRoleEnabled(*@Param("userId")*Long userId ,*@Param("enabled")*Integer enabled);

ps.当使用JavaBean参数类型时,上述代码应该改写为

@param user
@param role
@return 
...
List<SysRole> selectRoleByUserAndRole(*@Param("user")*SysUser user ,*@Param("role")*SysRole role);

在xml中不直接使用#{userId}和#{enabled},而是应该使用JavaBean类型的SysUser的成员来注解,而id和enabled又是成员的属性,所以分别是user.id和role.enabled

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值