Mybatis传递多个参数的几种方法

我们在使用mybatis时 更多的时候是需要传多个参数给映射器。现在我记录几种mybatis传多个参数的方式 分别是:使用map传递参数,使用注解来传入参数,使用JavaBean传入参数。

1.使用map传递参数
我们可以使用mabatis提供的Map接口来实现
//xml文件

  1. id="getRoleByMap" parameterType="map" resultType="String">
  2. select name where a.id = #{id} and a.age = #{age}
  3. //dao接口
  4. public String getRoleByMap(Map,String> params);
  5. //serverce层
  6. Map,String> map=new HashMap(String,String)()
  7. map.put("id","123");
  8. map.put("age","18");
  9. String name=getRoleBymap(map);
  10. 这种方法简单易用,但是Map需要键值对,需要深入程序中查看代码,造成可读性下降。
  11. 2.使用注解来传入参数
  12. id="getRoleByMap" parameterType="String" resultType="String">
  13. select name where a.id = #{id} and a.age = #{age}
  14. //dao接口
  15. public String getRoleByMap(@Param("id") String id,(@Param("age") String age);
  16. //serverce层
  17. String name=getRoleBymap("123","18");

这种方法一看参数就知道代表什么,可读性比较好,但是参数很多时,会造成麻烦。不够对于参数多的我们可以用JavaBean的方式。
3.使用JavaBean传入参数

  1. id="getRoleByMap" parameterType="com.test.vo.Role" resultType="String">
  2. select name where a.id = #{id} and a.age = #{age}
  3. //dao接口
  4. public String getRoleByMap(Role role);
  5. //serverce层
  6. Role role=new Role();
  7. String name=getRoleBymap(role);
  8. //JavaBean
  9. public class Role{
  10. private String id;
  11. private String name;
  12. //getting方法和setting方法
  13. }

当参数个数大于5个时,建议使用JavaBean的方法。

其他方式

  1. public List<XXXBean> getXXXBeanList(String xxId, String xxCode);
  2. <select id="getXXXBeanList" resultType="XXBean">
  3. select t.* from tableName where id = #{0} and name = #{1}
  4. select>

由于是多参数那么就不能使用parameterType, 改用#{index}是第几个就用第几个的索引,索引从0开始