動態sql語句 入參中存在 數組 或 List


mybatis中入參存在 數組或List 時,使用foreach 進行動態拼接

foreach可以在SQL語句中迭代一個集合。它的屬性主要有item、index、collection、separator、close、open

  • item:表示集合中每一個元素進行迭代時的別名
  • index:指定一個名稱,用於表示在迭代過程中,每次迭代到的位置
  • open:表示該語句以什么開始,in條件語句是以“(”開始 
  • separator:表示在每次迭代之間以什么符號作為分隔符,in條件語句以“,”作為分隔符
  • close:表示該語句以什么結束,in條件語句是以“)”結束
  • collection:該屬性必需指定,不同情況下,該屬性的值是不一樣的
    • 若入參為單參數且參數類型是一個List,collection屬性值為list
    • 若入參為單參數且參數類型是一個數組,collection屬性值為array
    • 若傳入參數為多參數,就需要把它們封裝為一個Map進行處理
    • 若傳入參數為多參數時,collection屬性值為傳入的列表名或數組名
<select id="getUserByRoleId_foreach_array" resultMap="userMapByRole">
  select * from smbms_user where userRole in
    <foreach collection="array" item="roleIds" open="(" separator="," close=")">
      #{roleIds}
    </foreach>
</select>

 

注:mybatis在傳入多個參數的時候,要用注解 @Param()命名別名,否則會報錯


免責聲明!

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



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