MyBatis入參方式


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>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM