Mybatis方法参数问题
按照参数的个数不同,可分为以下两个方面
-
参数个数为1
-
参数个数大于1
以Person类型为例,探究service层向dao传递参数,对应dao层的方法编写。
Person.class
public class Person { private Integer pid; private String pname; private String cardid; }
1.参数个数为1
public interface PersonDao {
@Delete("delete from person where pid=#{pid}")
public void delete(int pid);
}
注意:当方法参数为1个时,sql语句中#{}中名字可和参数名不一致。
2.参数个数大于1
当service层向dao层传递的参数大于1时,有以下几个方法。
-
组装成domain对象
-
传递map集合
-
传递多个参数,不进行处理,使用param关键字
-
配合注解传递
(1)组装成domain对象
public interface PersonDao {
@Insert("insert into person values(#{pid},#{pname},#{cardid})")
public void insertOne(Person person);
}
(2)传递map集合
public interface PersonDao {
@Insert("insert into person values(#{pid},#{pname},#{cardid})")
public void insert(Map map);
}
(3)使用param关键字
public interface PersonDao {
@Insert("insert into person values(#{param1},#{param2},#{param3})")
public void insert(int pid,String pname,String cardid);
}
(4)配合注解传递
public interface PersonDao {
@Insert("insert into person values(#{pid},#{pname},#{cardid})")
public void insert(@Param("pid")int pid,@Param("pname") String pname,@Param("cardid")String cardid);
}