我们在使用mybatis时 更多的时候是需要传多个参数给映射器。现在我记录几种mybatis传多个参数的方式 分别是:使用map传递参数,使用注解来传入参数,使用JavaBean传入参数。
1.使用map传递参数
我们可以使用mabatis提供的Map接口来实现
//xml文件
select name where a.id = #{id} and a.age = #{age}
//dao接口
public String getRoleByMap(Map
,String> params); //serverce层
Map
,String> map=new HashMap(String,String)() map.put("id","123");
map.put("age","18");
String name=getRoleBymap(map);
这种方法简单易用,但是Map需要键值对,需要深入程序中查看代码,造成可读性下降。
2.使用注解来传入参数
select name where a.id = #{id} and a.age = #{age}
//dao接口
public String getRoleByMap(@Param("id") String id,(@Param("age") String age);
//serverce层
String name=getRoleBymap("123","18");
这种方法一看参数就知道代表什么,可读性比较好,但是参数很多时,会造成麻烦。不够对于参数多的我们可以用JavaBean的方式。
3.使用JavaBean传入参数
select name where a.id = #{id} and a.age = #{age}
//dao接口
public String getRoleByMap(Role role);
//serverce层
Role role=new Role();
String name=getRoleBymap(role);
//JavaBean
public class Role{
private String id;
private String name;
//getting方法和setting方法
}
当参数个数大于5个时,建议使用JavaBean的方法。
其他方式
public List<XXXBean> getXXXBeanList(String xxId, String xxCode);
<select id="getXXXBeanList" resultType="XXBean">
select t.* from tableName where id = #{0} and name = #{1}
select>
由于是多参数那么就不能使用parameterType, 改用#{index}是第几个就用第几个的索引,索引从0开始
原创来源:滴一盘技术