MyBatis_单个参数&多个参数&命名参数

单个参数:mybatis不会做特殊处理,
#{参数名/任意名}:取出参数值。

在接口EmployeeMapper.java中有

public Employee getEmpById(Integer id);

EmployeeMapper.xml中用#{id}取出参数值,因为只有一个,用任意名也可以

    <select id="getEmpById" resultType="com.atguigu.mybatis.bean.Employee">
         select * from tbl_employee where id = #{abcde}
    </select>

多个参数:mybatis会做特殊处理。

我们在接口EmployeeMapper.java中新加一个方法:
方法:public Employee getEmpByIdAndLastName(Integer id,String lastName);
取值方法:用#{id},#{lastName}这种方式取出参数

    <select id="getEmpByIdAndLastName" resultType="com.atguigu.mybatis.bean.Employee">
        select * from tbl_employee where id = #{id} and last_name=#{lastName}
    </select>

结果出异常了:

    org.apache.ibatis.binding.BindingException: 
    Parameter 'id' not found. 
    Available parameters are [1, 0, param1, param2]

多个参数会被封装成 一个map
keyparam1...paramN,或者参数的索引也可以.索引从零开始
value:传入的参数值
#{}就是从map中获取指定的key的值;
所以我们的取值方法换成这样:用#{param1},#{param2}这种方式取出参数

    <select id="getEmpByIdAndLastName" resultType="com.atguigu.mybatis.bean.Employee">
        select * from tbl_employee where id = #{param1} and last_name=#{param2}
    </select>

这样子就可以正确查询了
但是这样太难看了,如果我们一定要用#{id},#{lastName}这种方式取出参数呢?可以这样

【命名参数】:明确指定封装参数时mapkey:@Param("id")
多个参数会被封装成 一个map
key:使用@Param注解指定的值
value:参数值
#{指定的key}取出对应的参数值

public Employee getEmpByIdAndLastName(@Param("id")Integer id,@Param("lastName")String lastName);

这样就用#{id},#{lastName}这种方式取出参数了

    <select id="getEmpByIdAndLastName" resultType="com.atguigu.mybatis.bean.Employee">
        select * from tbl_employee where id = #{id} and last_name=#{lastName}
    </select>
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值