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

MyBatis之傳入?yún)?shù)為list、數(shù)組、map的寫法

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

1.foreach簡(jiǎn)單介紹

foreach的主要用在構(gòu)建in條件中,它可以在SQL語(yǔ)句中進(jìn)行迭代一個(gè)集合。

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

  • item表示集合中每一個(gè)元素進(jìn)行迭代時(shí)的別名,
  • index指定一個(gè)名字,用于表示在迭代過程中,每次迭代到的位置,
  • open表示該語(yǔ)句以什么開始,
  • separator表示在每次進(jìn)行迭代之間以什么符號(hào)作為分隔符,
  • close表示以什么結(jié)束,

collection屬性是在使用foreach的時(shí)候最關(guān)鍵的也是最容易出錯(cuò)的,該屬性是必須指定的,但是在不同情況下,該屬性的值是不一樣的

主要有一下3種情況: 

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

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

(3)如果傳入的參數(shù)是多個(gè)的時(shí)候,我們就需要把它們封裝成一個(gè)Map了,當(dāng)然單參數(shù)也可以封裝成map,實(shí)際上如果你在傳入?yún)?shù)的時(shí)候,在MyBatis里面也是會(huì)把它封裝成一個(gè)Map的,map的key就是參數(shù)名,所以這個(gè)時(shí)候collection屬性值就是傳入的List或array對(duì)象在自己封裝的map里面的key.

2.實(shí)踐-實(shí)體類

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.實(shí)踐-XML

<!--List:forech中的collection屬性類型是List,collection的值必須是:list,item的值可以隨意,Dao接口中參數(shù)名字隨意 -->
    <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接口中參數(shù)名字隨意 -->
    <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.實(shí)踐-Mapper

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

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

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

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

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

    java回溯算法解數(shù)獨(dú)問題

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

    基于Java解決華為機(jī)試實(shí)現(xiàn)密碼截取?

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

    Java實(shí)現(xiàn)經(jīng)典游戲推箱子的示例代碼

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

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

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

    解析Java中PriorityQueue優(yōu)先級(jí)隊(duì)列結(jié)構(gòu)的源碼及用法

    優(yōu)先級(jí)隊(duì)列是一種隊(duì)列結(jié)構(gòu),是0個(gè)或多個(gè)元素的集合,每個(gè)元素都有一個(gè)優(yōu)先權(quán),PriorityQueue被內(nèi)置于JDK中,本文就來解析Java中PriorityQueue優(yōu)先級(jí)隊(duì)列結(jié)構(gòu)的源碼及用法.
    2016-05-05
  • java 導(dǎo)入Excel思路及代碼示例

    java 導(dǎo)入Excel思路及代碼示例

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

    MyBatisPlus3.4.3版自動(dòng)生成代碼的使用過程

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

    Sharding-JDBC自動(dòng)實(shí)現(xiàn)MySQL讀寫分離的示例代碼

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

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

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

最新評(píng)論