Mybatis传参数的方式总结

来源:互联网 发布:recovery清除数据 编辑:程序博客网 时间:2024/06/05 20:40

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

First:直接传param

Dao层代码:

Oem selectByNameAndId(Integer id,String name);

对应的Mapper.xml

<select id="selectByNameAndId" resultMap="xxx.Oem">select *from oemwhere 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层代码:

OemselectByMap(Map mapparam);

对应的Mapper.xml:

<select id="selectByMap" parameterType="java.util.Map" resultMap="xxx.Oem">select *from oemwhere 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 oemwhere id = #{id,jdbcType=INTEGER} and name = #{name,"jdbcType=VARCHAR"}</select>

Dao层代码:

OemselectByMap(@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中要和注解里的名字保持一致。


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