欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MyBatis之傳入參數為list、數組、map的寫法

 更新時間:2023年11月30日 15:43:18   作者:zhangqifeng92  
這篇文章主要介紹了MyBatis之傳入參數為list、數組、map的寫法,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

1.foreach簡單介紹

foreach的主要用在構建in條件中,它可以在SQL語句中進行迭代一個集合。

foreach元素的屬性主要有item,index,collection,open,separator,close。

  • item表示集合中每一個元素進行迭代時的別名,
  • index指定一個名字,用于表示在迭代過程中,每次迭代到的位置,
  • open表示該語句以什么開始,
  • separator表示在每次進行迭代之間以什么符號作為分隔符,
  • close表示以什么結束,

collection屬性是在使用foreach的時候最關鍵的也是最容易出錯的,該屬性是必須指定的,但是在不同情況下,該屬性的值是不一樣的

主要有一下3種情況: 

(1)如果傳入的是單參數且參數類型是一個List的時候,collection屬性值為list .

(2)如果傳入的是單參數且參數類型是一個array數組的時候,collection的屬性值為array .

(3)如果傳入的參數是多個的時候,我們就需要把它們封裝成一個Map了,當然單參數也可以封裝成map,實際上如果你在傳入參數的時候,在MyBatis里面也是會把它封裝成一個Map的,map的key就是參數名,所以這個時候collection屬性值就是傳入的List或array對象在自己封裝的map里面的key.

2.實踐-實體類

public class Employees {
    private Integer employeeId;
    private String firstName;
    private String lastName;
    private String email;
    private String phoneNumber;
    private Date hireDate;
    private String jobId;
    private BigDecimal salary;
    private BigDecimal commissionPct;
    private Integer managerId;
    private Short departmentId;
}  

3.實踐-XML

<!--List:forech中的collection屬性類型是List,collection的值必須是:list,item的值可以隨意,Dao接口中參數名字隨意 -->
    <select id="getEmployeesListParams" resultType="Employees">
        select *
        from EMPLOYEES e
        where e.EMPLOYEE_ID in
        <foreach collection="list" item="employeeId" index="index"
            open="(" close=")" separator=",">
            #{employeeId}
        </foreach>
    </select>
 
    <!--Array:forech中的collection屬性類型是array,collection的值必須是:list,item的值可以隨意,Dao接口中參數名字隨意 -->
    <select id="getEmployeesArrayParams" resultType="Employees">
        select *
        from EMPLOYEES e
        where e.EMPLOYEE_ID in
        <foreach collection="array" item="employeeId" index="index"
            open="(" close=")" separator=",">
            #{employeeId}
        </foreach>
    </select>
 
    <!--Map:不單單forech中的collection屬性是map.key,其它所有屬性都是map.key,比如下面的departmentId -->
    <select id="getEmployeesMapParams" resultType="Employees">
        select *
        from EMPLOYEES e
        <where>
            <if test="departmentId!=null and departmentId!=''">
                e.DEPARTMENT_ID=#{departmentId}
            </if>
            <if test="employeeIdsArray!=null and employeeIdsArray.length!=0">
                AND e.EMPLOYEE_ID in
                <foreach collection="employeeIdsArray" item="employeeId"
                    index="index" open="(" close=")" separator=",">
                    #{employeeId}
                </foreach>
            </if>
        </where>
    </select>

4.實踐-Mapper

public interface EmployeesMapper { 
 
    List<Employees> getEmployeesListParams(List<String> employeeIds);
 
    List<Employees> getEmployeesArrayParams(String[] employeeIds);
 
    List<Employees> getEmployeesMapParams(Map<String,Object> params);
}

總結

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • java選擇框、單選框和單選按鈕

    java選擇框、單選框和單選按鈕

    本文給大家介紹的是java中選擇框、單選框和單選按鈕的操作方法,十分的簡單實用,有需要的小伙伴可以參考下。
    2015-06-06
  • java回溯算法解數獨問題

    java回溯算法解數獨問題

    這篇文章主要為大家詳細介紹了java回溯算法解數獨問題,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • 基于Java解決華為機試實現密碼截取?

    基于Java解決華為機試實現密碼截取?

    這篇文章主要介紹了基于Java解決華為機試實現密碼截取,文章圍繞主題相關資料展開詳細內容,具有一的參考價值,需要的小伙伴可以參考一下,希望對你有所幫助
    2022-02-02
  • Java實現經典游戲推箱子的示例代碼

    Java實現經典游戲推箱子的示例代碼

    《推箱子》推箱子是一個古老的游戲,目的是在訓練你的邏輯思考能力。本文將利用Java實現這一經典的小游戲,并采用了swing技術進行了界面化處理,需要的可以參考一下
    2022-02-02
  • Java多線程通信wait()和notify()代碼實例

    Java多線程通信wait()和notify()代碼實例

    這篇文章主要介紹了Java多線程通信wait()和notify()代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-04-04
  • 解析Java中PriorityQueue優(yōu)先級隊列結構的源碼及用法

    解析Java中PriorityQueue優(yōu)先級隊列結構的源碼及用法

    優(yōu)先級隊列是一種隊列結構,是0個或多個元素的集合,每個元素都有一個優(yōu)先權,PriorityQueue被內置于JDK中,本文就來解析Java中PriorityQueue優(yōu)先級隊列結構的源碼及用法.
    2016-05-05
  • java 導入Excel思路及代碼示例

    java 導入Excel思路及代碼示例

    這篇文章主要介紹了java 導入Excel思路及代碼示例,簡要分析了設計思路,然后分享了實例代碼,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • MyBatisPlus3.4.3版自動生成代碼的使用過程

    MyBatisPlus3.4.3版自動生成代碼的使用過程

    這篇文章主要介紹了MyBatisPlus3.4.3版自動生成代碼的使用,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-04-04
  • Sharding-JDBC自動實現MySQL讀寫分離的示例代碼

    Sharding-JDBC自動實現MySQL讀寫分離的示例代碼

    本文主要介紹了Sharding-JDBC自動實現MySQL讀寫分離,優(yōu)點在于數據源完全有Sharding-JDBC托管,寫操作自動執(zhí)行master庫,讀操作自動執(zhí)行slave庫,感興趣的可以了解一下
    2021-11-11
  • 基于Spring監(jiān)聽Binlog日志的方法詳解

    基于Spring監(jiān)聽Binlog日志的方法詳解

    MySQL 的二進制日志(binlog)有三種不同的格式,通常被稱為 binlog 模式,這三種模式分別是 Statement 模式、Row 模式和Mixed 模式,本文將給大家介紹如何基于Spring監(jiān)聽Binlog日志,需要的朋友可以參考下
    2024-09-09

最新評論