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

ORM框架 小海豚博客管理员 2019-02-27 14:41:00.0 267 0条

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

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

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

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

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

当参数个数大于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开始

暗锚,解决锚点偏移

文章评论

嘿,来试试登录吧!