MyBatis框架总结三---参数传递

参数传递

一.单参数传递

可以是基本数据类型也可以是对象类型,Mybatis可以直接使用,不需要经过任何处理

ParamMapper接口类:

	//单参数处理
	public Emp getEmpBiEid(Integer eid);

ParamMapper映射文件:

	<!-- 单参数处理:public Emp getEmpBiEid(Integer eid); -->
	<select id="getEmpBiEid" resultType="com.bean.Emp">
		select eid,ename,age,gender
		from emp where eid=#{eid};
	</select>

二.多参数传递

任意多个参数都会被Mybatis重新包装成一个Map传入,Map的key识Mybatis版本而定,可能是arg0,arg2或者param0,param1,或者0,1…

	//多参数处理
	public List<Emp> getEmpByAgeAndGender(Integer age,String gender);
	<!-- 多参数处理:public List<Emp> getEmpByAgeAndGender(Integer age,String gender); -->
	<select id="getEmpByAgeAndGender" resultType="Emp">
		select
		eid,ename,age,gender from emp where age=#{arg0} and gender=#{arg1};
	</select>

三.命名参数

多参数传递,经Map处理后没有自己指定的参数名,使用不方便,我们可以自己使用@Param为参数起一个名字

	//命名参数
	public List<Emp> getEmpByGenderAndDid(@Param("gender")String gender,@Param("did")Integer did);
	<!-- 命名参数处理:public List<Emp> getEmpByGenderAndDid(@Param("gender")String 
		gender,@Param("did")Integer did); -->
	<select id="getEmpByGenderAndDid" resultType="Emp">
		select
		eid,ename,age,gender from emp where gender=#{gender} and did=#{did};
	</select>

四.多个参数封装到map直接传递

	//封装的Map参数
	Emp getEmpByMap(Map<String,Object> map);
	<!-- Map参数:Emp getEmpByMap(Map<String,Object> map); -->
	<select id="getEmpByMap" resultType="Emp">
		<!-- 通过键值对确定参数值 -->
		select eid,ename,age,gender from emp where eid='${eid}' and
		ename='${ename}'
	</select>

五.POJO

当这些参数属于我们业务POJO时,我们直接传递

六.Collection/Array

会被Mybatis封装成一个map传入,Collection对应的key是collection,Array对应的key是array.如果确定是List集合,key还可以是list,当然我们也可以通过@Param("")取别名的方式来获取key

	//Collection/Array/List参数
	public List<Emp>  getEmpByAge(List<Integer> ages);	
    <select id="getEmpByAge" resultType="Emp">
       select eid,ename,age,gender from emp where age in
       <foreach collection="list" item="age" index="index" open="(" close=")" separator=",">
         #{age}
       </foreach>
    </select>

取别名

	//Collection/Array/List参数
	public List<Emp>  getEmpByAge(@Param("ages")List<Integer> ages);	
    <select id="getEmpByAge" resultType="Emp">
       select eid,ename,age,gender from emp where age in
       <foreach collection="ages" item="age" index="index" open="(" close=")" separator=",">
         #{age}
       </foreach>
    </select>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值