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

mybatis條件語句中帶數(shù)組參數(shù)的處理

 更新時(shí)間:2021年09月11日 09:34:26   作者:luffy5459  
這篇文章主要介紹了mybatis條件語句中帶數(shù)組參數(shù)的處理方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

mybatis條件語句中帶數(shù)組參數(shù)

如題,在mybatis編寫sql語句的時(shí)候,可能會遇到in這樣的關(guān)鍵字,我們知道in后面需要接上('a','b','c')這樣的一個(gè)結(jié)構(gòu)。它像一個(gè)數(shù)組,但是是用括號()包裹的,參數(shù)之間還有逗號隔開。

這里因?yàn)閿?shù)組參數(shù)是變量,直接通過拼接的方式不可行。

這里需要一個(gè)標(biāo)簽foreach,標(biāo)簽可以有item,collection,open,close,separator等屬性,分別表示變量,變量集合,開始符號,結(jié)束符號,分隔符。

這里給出一個(gè)示例

定義返回對象

<resultMap type="com.xxx.springmybatis.domain.User" id="UserResult">
  <id column="id" jdbcType="BIGINT" property="id"/>
  <result column="name" jdbcType="VARCHAR" property="name"/>
  <result column="email" jdbcType="VARCHAR" property="email"/>
</resultMap>

編寫sql語句

<select id="findByIds" resultMap="UserResult" parameterType="list">
     select * from users
     where id in
     <foreach collection="list" item="id" open="(" close=")" separator=",">
      #{id,jdbcType=BIGINT}
     </foreach>
</select>

定義dao方法:

package com.xxx.springmybatis.dao;
import java.util.List;
import com.xxx.springmybatis.domain.User;
public interface UserMapper {
    User getById(Integer id);
    User getByName(String name);
    void save(User user);    
    List<User> findByIds(List<Integer> ids);
}

以上的示例,是通過id數(shù)組來查詢對應(yīng)的用戶集合。我們傳入的用戶ID,最終在sql中會通過拼接的方式組成where id in (3,4)的條件。

如下所示,如果要查詢id為3,4的用戶,那么打印的sql語句可以看出拼接的樣子:

這里有必要說明的是foreach標(biāo)簽中的collection屬性

1、List集合,默認(rèn)使用list代表入?yún)?,?shù)組,默認(rèn)使用array作為入?yún)ⅰ?/p>

2、如果傳入的參數(shù)是一個(gè)對象,對象User有個(gè)屬性List ids,那么就使用ids作為入?yún)ⅰ?/p>

3、如果接口聲明的地方通過注解@Param("xx")指定了入?yún)ⅲ敲磍ist,array這種默認(rèn)的參數(shù)就失效,這時(shí)候需要指定xx為入?yún)ⅰ?/p>

本例中因?yàn)槭褂玫氖荓ist集合傳入,所以默認(rèn)就使用了list作為collection入?yún)⒌逆I。

mybatis多參數(shù)傳遞(其中包括數(shù)組)

mapper接口

public void batchDelete(@Param(value = "activityId") Integer activityId, @Param(value = "userIds") Integer[] userIds);

mapper.xml的配置

<insert id="batchDelete">
     delete from T_ACT_USERS where ACTIVITY_ID = #{activityId}
     and USER_ID in
     <foreach collection="userIds" item="item" index="index" open="(" separator="," close=")">
            #{item}
     </foreach>
</insert>

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

相關(guān)文章

  • Java中數(shù)據(jù)庫加密的方式分享

    Java中數(shù)據(jù)庫加密的方式分享

    在現(xiàn)今互聯(lián)網(wǎng)時(shí)代,數(shù)據(jù)安全已經(jīng)成為了我們必須要面對的重要課題,在本文中,我們將會介紹Java中常用的幾種數(shù)據(jù)庫加密方式并分析一下它們的優(yōu)缺點(diǎn),希望對大家有所幫助
    2023-05-05
  • Springboot入門案例及部署項(xiàng)目的詳細(xì)過程

    Springboot入門案例及部署項(xiàng)目的詳細(xì)過程

    Spring Boot是由Pivotal團(tuán)隊(duì)提供的全新框架,其設(shè)計(jì)目的是用來簡化新Spring應(yīng)用的初始搭建以及開發(fā)過程,本文給大家分享一個(gè)入門案例使用Springboot1.5.9搭建,具體配置部署過程跟隨小編一起看看吧
    2021-07-07
  • 深入探討Druid動態(tài)數(shù)據(jù)源的實(shí)現(xiàn)方式

    深入探討Druid動態(tài)數(shù)據(jù)源的實(shí)現(xiàn)方式

    Druid是一個(gè)高性能的實(shí)時(shí)分析數(shù)據(jù)庫,它可以處理大規(guī)模數(shù)據(jù)集的快速查詢和聚合操作,在Druid中,動態(tài)數(shù)據(jù)源是一種可以在運(yùn)行時(shí)動態(tài)添加和刪除的數(shù)據(jù)源,使用動態(tài)數(shù)據(jù)源,您可以在Druid中輕松地處理不斷變化的數(shù)據(jù)集,本文講給大家介紹一下Druid動態(tài)數(shù)據(jù)源該如何實(shí)現(xiàn)
    2023-08-08
  • SpringBoot使用MyBatis-Flex實(shí)現(xiàn)靈活的數(shù)據(jù)庫訪問

    SpringBoot使用MyBatis-Flex實(shí)現(xiàn)靈活的數(shù)據(jù)庫訪問

    MyBatisFlex是一款優(yōu)秀的持久層框架,本文主要介紹了SpringBoot使用MyBatis-Flex實(shí)現(xiàn)靈活的數(shù)據(jù)庫訪問,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-06-06
  • Mybatis參數(shù)傳遞示例代碼

    Mybatis參數(shù)傳遞示例代碼

    這篇文章主要給大家介紹了關(guān)于Mybatis參數(shù)傳遞的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-08-08
  • 淺談MyBatis循環(huán)Map(高級用法)

    淺談MyBatis循環(huán)Map(高級用法)

    這篇文章主要介紹了淺談MyBatis循環(huán)Map(高級用法),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • 基于OpenID?Connect及Token?Relay實(shí)現(xiàn)Spring?Cloud?Gateway

    基于OpenID?Connect及Token?Relay實(shí)現(xiàn)Spring?Cloud?Gateway

    這篇文章主要介紹了基于OpenID?Connect及Token?Relay實(shí)現(xiàn)Spring?Cloud?Gateway,Spring?Cloud?Gateway旨在提供一種簡單而有效的方式來路由到API,并為API提供跨領(lǐng)域的關(guān)注點(diǎn),如:安全性、監(jiān)控/指標(biāo)和彈性
    2022-06-06
  • 淺談異常結(jié)構(gòu)圖、編譯期異常和運(yùn)行期異常的區(qū)別

    淺談異常結(jié)構(gòu)圖、編譯期異常和運(yùn)行期異常的區(qū)別

    下面小編就為大家?guī)硪黄獪\談異常結(jié)構(gòu)圖、編譯期異常和運(yùn)行期異常的區(qū)別。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-09-09
  • IDEA如何搭建Struts2項(xiàng)目

    IDEA如何搭建Struts2項(xiàng)目

    這篇文章主要介紹了IDEA如何搭建Struts2項(xiàng)目,文中通過圖文介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-02-02
  • Spring?boot框架JWT實(shí)現(xiàn)用戶賬戶密碼登錄驗(yàn)證流程

    Spring?boot框架JWT實(shí)現(xiàn)用戶賬戶密碼登錄驗(yàn)證流程

    這篇文章主要介紹了Springboot框架JWT實(shí)現(xiàn)用戶賬戶密碼登錄驗(yàn)證,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-06-06

最新評論