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

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}
	

你可能感兴趣的:(Mybatis)