1.傳遞單參數的形式
MyBatis會自動進行參數的賦值
如:
public void deletePerson(Integer id); //接口
<!-- mapper配置文件--> <delete id="deletePerson" parameterType="int"> delete from person where id=#{parameter1} <!-- #{}里面寫任何值都能取到值--> </delete>
2.傳遞多個參數(mapper不會自動賦值)
a.使用Map接口(不推薦)
public Person getPersonByNameAndGender(Map<String,Object> param);//接口
<select id="getPersonByNameAndGender" resultType="person"> select * from person where username=#{username} and gender=#{gender} <!--#{}里面填寫Map的key值--> </select>
b.使用javaBean(封裝pojo類)傳遞參數(傳遞的參數多於5)
//將要傳遞的參數封裝在一個對象中 public Person getPersonByNameAndGender(Person person);
<select id="getPersonByNameAndGender" resultType="person"> select * from person where username=#{username} and gender=#{gender} <!--#{}里填寫person對象里面的屬性--> </select>
c.使用注解@param傳遞參數(傳遞的參數少於5)
public Person getPersonByNameAndGender(@Param("username") String username, @Param("gender") String gender);
<select id="getPersonByNameAndGender" resultType="person"> select * from person where username=#{username} and gender=#{gender} </select>
3.傳遞的參數是個collection、list、array
使用注解@param
public Person getPersonByCollection(@Param("test") int[] ids);
<select id="getPersonByCollection" resultType="person"> select * from person where id=#{test[0]} </select>
可使用foreach標簽讀取參數
public List<Person> getPersonsByIds(@Param("test")int[] ids);
<select id="getPersonsByIds" resultType="person"> select * from person where id in <foreach collection="test" item="id" index="i" open="(" close=")" separator=","> #{id} </foreach> <!--collection表示選取的集合,item表示當前遍歷的對象,index表示當前遍歷的索引--> <!--若test這個數組里面為test[]{1,2,3},則上面的sql語句相當於select * from person id in (1,2,3,4)--> </select>
