Mybatis传参数的方式总结

最近公司项目用到mybatis框架,刚入手,遇到不少坑,特在这里总结一下,方便自己查阅。

First:直接传param

Dao层代码:

Oem selectByNameAndId(Integer id,String name);

对应的Mapper.xml

<select id="selectByNameAndId" resultMap="xxx.Oem">
	select *
	from oem
	where id = #{0} and name = #{1}
</select>
此处的#{0}代表的是第一个参数即为id,第二个参数用#{1},下脚标从0开始。

这里需要注意几点:

(1)用此种方法,只传递一个参数时,那在对应的xml文件中获取时,#{xxx},用什么都可以,没有具体限制,#{0},#{id},#{abc}当然开发中肯定要有一定的意义,不能太随便。

(2)当传递参数数量大于1时,可以用我上面列举的大括号里+下脚标。

(3)这里的xml中并没有配置parametertype这个参数,这是因为如果参数的类型不止一种时,可以省略不写。

Second:使用Map进行传param

service层调用代码:

Map mapparam =new HashMap();

mapparam.put("id","123");
mapparam.put("name",xiaoming);

OemProductOrder opo =new OemProductOrder();
opo.selectByMap(mapparam);

Dao层代码:

Oem	selectByMap(Map mapparam);

对应的Mapper.xml:

<select id="selectByMap" parameterType="java.util.Map" resultMap="xxx.Oem">
	select *
	from oem
	where id = #{id,jdbcType=INTEGER} and name = #{name,"jdbcType=VARCHAR"}
</select>

此处不能再直接使用下脚标了,而要使用map里面的key。


Third 使用参数注解:

为了简单这里直接使用上面的代码,稍加改动。

Mapper.xml:

<select id="selectByMap" parameterType="xxx.Oem" resultMap="xxx.Oem">
	select *
	from oem
	where id = #{id,jdbcType=INTEGER} and name = #{name,"jdbcType=VARCHAR"}
</select>

Dao层代码:

Oem	selectByMap(@Param("id")Integer ida,@Param("name")String namea);

service层调用代码:

OemProductOrder opo =new OemProductOrder();
opo.selectByMap(id,name);
这里使用的是@param注解传参,我特意在Dao层把行参的名字都改动了下(后面都加了个a),因为是注解里面写的仍然是id,name所以在mapper.xml中取值时,使用的也是id,name。也就是xml中要和注解里的名字保持一致。


至于其他的用对象的属性进行传值,也不外乎就上面三种情况,只是取值时在用.取属性的取值。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

亚马特

感觉有用,就给点打赏吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值