Mybatis_SQL映射文件_参数的各种取值

这篇博客详细介绍了Mybatis在处理SQL映射文件时,针对不同情况下的参数取值方式。包括单个参数的基本类型取值、多个参数的处理,如使用索引或命名参数,以及@Param注解的使用。同时,文章讲解了传入JavaBean和Map对象时的参数映射规则。

1、单个参数:

  • 若为基本类型:取值:#{随便写}
  • 传入pojo:后面第4点讨论

2、多个参数:
public Employee getEmpByIdAndEmpName(Integer id,String empName)
此时取值:#{参数名}是无效了;
可用:0,1(参数的索引)或者param1,param2(第几个参数paramN)
原因:只要传入了多个参数;mybatis会自动的将这些参数封装在一个map中;

封装时使用的key就是参数的索引和参数的第几个表示
			Map<String,Object> map = new HashMap<>();
			map.put("1",传入的值);map.put("2","传入的值");
		 #{key}就是从这个map中取值;

3、@Param:为参数指定key;命名参数;我们以后也推荐这么做;
我们可以告诉mybatis,封装参数map的时候别乱来,使用我们指定的key

  <select id="getEmpByIdAndEmpName" resultType="com.czl.bean.Employee">
        select * from t_employee where id=#{id} and empname=#{empName}
    </select>

若没有使用0,1或者param1 param2则会报错

<!--   Caused by: org.apache.ibatis.binding.BindingException: 
			Parameter 'id' not found. 
			Available parameters are [0, 1, param1, param2]
	-->
 //@Param:为参数指定key;命名参数
 public Employee getEmpByIdAndEmpName(
 @Param("id") Integer id,@Param("empName") String empname);

4、传入了pojo(javaBean)
取值:#{pojo的属性名}

5、传入了map:将多个要使用的参数封装起来(使用场景:当需要传入几个参数,但是又不希望为这几个参数建立一个javabean的时候,可以把这些参数封装在一个map中)
取值:#{key}

6、扩展:多个参数:自动封装map;

  method01(@Param("id")Integer id,String empName,Employee employee);
	Integer id -> #{id}
	String empName -> #{param2}
	Employee employee(取出这个里面的email)-->#{param3.email}
	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值