mybatis 参数处理 #{} ${}

单个参数 mybatis不会做特殊处理

#{参数名}: 取出参数值.

多个参数 myabtis会做特殊处理

    多个参数会被封装成一个map
        key: arg0, arg1, param1, param2...
        value: 传入的参数值
    #{}就是从map中获取指定的key的值
  异常:
        org.apache.ibatis.exceptions.PersistenceException:
        ### Error querying database.  Cause: org.apache.ibatis.binding.BindingException: Parameter 'id' not found. Available parameters are [arg1, arg0, param1, param2]
        ### Cause: org.apache.ibatis.binding.BindingException: Parameter 'id' not found. Available parameters are [arg1, arg0, param1, param2]

        操作:
            方法:public Employee getEmployeeByIdAndLastNmae(Integer id, String lastName);
            取值:
            <select id="getEmployeeByIdAndLastNmae" resultType="com.ll.mybatis.entity.Employee">
                    select id, last_name, email, gender
                    from tbl_employee
                    where id = #{id} and last_name=#{lastName}
            </select>

多个参数推荐使用以下方式:

1命名参数: 明确指定封装参数时map的key:

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

2.POJO:

如果多个参数正好是我们业务逻辑的数据模型,我们就可以直接传入pojo(Employee类的对象)
#{属性名}: 取出传入的pojo的属性值

3.map:

如果多个参数不是业务模型中的数据,不经常使用,没有对应的pojo,为了方便,我们也可以传入map

    public Employee getEmployeeByIdAndLastNmae(Map<String, Object> map);
    #{
   key}: 取出map中对应的值

4.TO:

如果多个参数不是业务模型中的数据,但是经常使用,推荐来编写一个TO(Transfer Object)数据传输对象

练习

public Employee getEmp(@param("id") Inte
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值