Mybatis系列四:映射文件-参数处理

一、单个参数:mybatis不会做特殊处理。#{参数名}#{任意名}:取出参数值。
 方法:public Employee getEmpById(Integer id);

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

二、多个参数:mybatis会做特殊处理。不能使用#{参数名}取出参数值。多个参数会被封装成 一个map,
 key:param1…paramN,或者参数的索引也可以
 value:传入的参数值
 #{}就是从map中获取指定的key的值;
 方法:public Employee getEmpByIdAndLastName(Integer id,String lastName);

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

三、命名参数:@Param明确指定封装参数时map的key。多个参数会被封装成 一个map,
 key:使用@Param注解指定的值
 value:参数值
#{指定的key}取出对应的参数值;
public Employee getEmpByIdAndLastName(@Param("id") Integer id,@Param("lastName") String lastName);

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

POJO:
 如果参数很多,并且正好是实体中的属性,我们就可以直接传入实体对象;因为实体会被转为一个key是属性名,value是属性值的map。
如:public Employee getEmpByIdAndLastName(Employee employee);
#{属性名}:取出传入的实体对象的属性值

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

Map:
 如果多个参数实体中的属性,不经常使用,我们也可以传入map。
如:public Employee getEmpByIdAndLastName(Map map);

	Map map = new HashMap();
	map.put("id","1");
	map.put("lastName","jerry4");

 #{key}:取出map中对应的值

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

TO:
 如果多个参数不是实体中的属性,但经常要使用,推荐来编写一个TO(Transfer Object)数据传输对象。如:

    Page{
    	int index;
    	int size;
    }

案例:
public Employee getEmp(@Param(“id”)Integer id,String lastName);
取值:id==>#{id/param1} lastName==>#{param2}

public Employee getEmp(Integer id,Employee emp);
取值:id==>#{param1} lastName===>#{param2.lastName}

public Employee getEmp(Integer id,@Param(“e”)Employee emp);
取值:id==>#{param1} lastName===>#{param2.lastName/e.lastName}

注意:如果是Collection(List、Set)类型或者是数组,也会特殊处理。也是把传入的list或者数组封装在map中。
 key:Collection(collection),如果是List还可以使用这个key(list)
 数组(array)
public Employee getEmpById(List ids);
取值:取出第一个id的值: #{list[0]}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值