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在处理SQL映射文件时,针对不同情况下的参数取值方式。包括单个参数的基本类型取值、多个参数的处理,如使用索引或命名参数,以及@Param注解的使用。同时,文章讲解了传入JavaBean和Map对象时的参数映射规则。
135

被折叠的 条评论
为什么被折叠?



