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

MyBatis傳入List集合查詢數(shù)據(jù)問(wèn)題

 更新時(shí)間:2023年02月07日 16:17:22   作者:single_cong  
這篇文章主要介紹了MyBatis傳入List集合查詢數(shù)據(jù)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

MyBatis傳入List集合查詢數(shù)據(jù)

使用的是SSM框架,數(shù)據(jù)庫(kù)是MySQL,做查詢的時(shí)候傳入List集合,使用SQL語(yǔ)句的in方式查詢數(shù)據(jù)

主要有兩點(diǎn)問(wèn)題

我的List集合是利用的另外一個(gè)語(yǔ)句查詢出來(lái)的,傳入?yún)?shù)是int類型,返回值是int類型的List集合:

List<Integer> select(Integer id);
<select id="select" resultType="java.util.List"
?? ?parameterType="java.lang.Integer">
?? ?select id
?? ?from section
?? ?where status='A'
?? ?and unit_id=#{id,jdbcType=INTEGER}
</select>

這是我第一次的時(shí)候使用的返回值類型(java.util.List),這種情況下在我執(zhí)行的時(shí)候會(huì)報(bào)錯(cuò):java.lang.UnsupportedOperationException

其實(shí)這里如果我們是要返回指定類型的集合直接寫java.lang.Integer(int類型)java.lang.String(字符串)等等就可以了,當(dāng)然也可以自定義一個(gè)resultMap

<select id="select" resultType="java.lang.Integer"
?? ?parameterType="java.lang.Integer">
?? ?select id
?? ?from section
?? ?where status='A'
?? ?and unit_id=#{id,jdbcType=INTEGER}
</select>

上面是通過(guò)一個(gè)id查詢出List集合,下面是將查到的這個(gè)List集合放入查詢條件中:

List<Test> selectById(List<Integer> id);
<select id="selectById" parameterType="java.util.List"
?? ?resultMap="BaseResultMap">
?? ?select * from test
?? ?where status = 'A'
?? ?and id in
?? ?<foreach collection="list" index="index" item="item" open="("
?? ??? ?separator="," close=")">
?? ??? ?#{item}
?? ?</foreach>
</select>

上述的查詢語(yǔ)句可以整合在一個(gè)sql語(yǔ)句中,這里為了創(chuàng)造list數(shù)據(jù)所以分開(kāi)了。

使用foreach 語(yǔ)句循環(huán)集合中的數(shù)據(jù),item就是循環(huán)到的數(shù)據(jù),如果你是一個(gè)復(fù)雜類型的數(shù)據(jù)做批量插入的話可以使用item.屬性名 的方式獲取對(duì)應(yīng)值,類似于java的foreach循環(huán)語(yǔ)句,某些時(shí)候可能傳入的是Array數(shù)組,畢竟都說(shuō)Array比List效率高,這種時(shí)候和上述方法類似,也是foreach語(yǔ)句。具體的分析后續(xù)更新。

MyBatis傳入List集合批量刪除

Model

public class FastDFSModel {
? ? private String pathId;
? ? private String modelId;
? ? private String csvpath;
? ? private String resultpath;
? ? private String updatetime;
? ? }

Dao

import org.apache.ibatis.annotations.Param;
?void deleteDateById(@Param("list") List<FastDFSModel> deleteList);

mapper

其中parameterType寫為list

foreach 中的collection寫為"list"

item 為遍歷的每一項(xiàng),代表著model

在變量中用#{item.pathId}來(lái)獲取值

此業(yè)務(wù)為通過(guò)id進(jìn)行刪除

其中open="(" separator="," close=")"為拼接的in查詢,把id用逗號(hào)拼接起來(lái)

?<delete id="deleteDateById" parameterType="java.util.List">
? ? ? ? delete from T_FASTDFS_PATH t where t.path_id in
? ? ? ? <foreach item="item" collection="list" open="(" separator="," close=")">
? ? ? ? ? ? #{item.pathId,jdbcType=VARCHAR}
? ? ? ? </foreach>
? ? </delete>

控制臺(tái)打印如下

delete from T_FASTDFS_PATH t where t.path_id in ( ? , ? , ? ) 
 PreparedStatement - ==> Parameters: 2(String), 1(String), 3(String)

總結(jié)

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

相關(guān)文章

  • Java中的==使用方法詳解

    Java中的==使用方法詳解

    這篇文章主要給大家介紹了關(guān)于Java中的==使用方法的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-09-09
  • Springboot集成Elasticsearch的步驟與相關(guān)功能

    Springboot集成Elasticsearch的步驟與相關(guān)功能

    ElasticSearch是開(kāi)源搜索平臺(tái)領(lǐng)域的一個(gè)新成員,?ElasticSearch是一個(gè)基于Lucene構(gòu)建的開(kāi)源,分布式,RESTful搜索引擎,這篇文章主要給大家介紹了關(guān)于Springboot集成Elasticsearch的相關(guān)資料,需要的朋友可以參考下
    2021-12-12
  • springboot中引入日志文件生成的配置詳解

    springboot中引入日志文件生成的配置詳解

    本文主要介紹了springboot中引入日志文件生成的配置詳解,包括日志級(jí)別的設(shè)置、日志格式的配置以及日志輸出的位置等,從而幫助開(kāi)發(fā)者更好地進(jìn)行開(kāi)發(fā)與調(diào)試
    2023-10-10
  • Java微服務(wù)分布式調(diào)度Elastic-job環(huán)境搭建及配置

    Java微服務(wù)分布式調(diào)度Elastic-job環(huán)境搭建及配置

    Elastic-Job在配置中提供了JobEventConfiguration,支持?jǐn)?shù)據(jù)庫(kù)方式配置,會(huì)在數(shù)據(jù)庫(kù)中自動(dòng)創(chuàng)建JOB_EXECUTION_LOG和JOB_STATUS_TRACE_LOG兩張表以及若干索引,來(lái)記錄作業(yè)的相關(guān)信息
    2023-02-02
  • Mybatis 動(dòng)態(tài)sql的編寫與開(kāi)啟二級(jí)緩存

    Mybatis 動(dòng)態(tài)sql的編寫與開(kāi)啟二級(jí)緩存

    二級(jí)緩存是Mapper級(jí)別的緩存,多個(gè)SqlSession去操作同一個(gè)Mapper中的SQL語(yǔ)句,則這些SqlSession可以共享二級(jí)緩存,即二級(jí)緩存是跨SqlSession的,這篇文章主要介紹了Mybatis 動(dòng)態(tài)sql的編寫|開(kāi)啟二級(jí)緩存,需要的朋友可以參考下
    2023-02-02
  • SpringBoot前后端分離項(xiàng)目之打包、部署到服務(wù)器詳細(xì)圖文流程

    SpringBoot前后端分離項(xiàng)目之打包、部署到服務(wù)器詳細(xì)圖文流程

    作為后臺(tái)開(kāi)發(fā),項(xiàng)目打包部署是經(jīng)常性的操作,下面這篇文章主要給大家介紹了關(guān)于SpringBoot前后端分離項(xiàng)目之打包、部署到服務(wù)器的相關(guān)資料,文中通過(guò)代碼示例介紹的非常詳細(xì),需要的朋友可以參考下
    2023-12-12
  • 快速理解Java垃圾回收和jvm中的stw

    快速理解Java垃圾回收和jvm中的stw

    這篇文章主要介紹了快速理解Java垃圾回收和jvm中的stw,涉及Java代碼的停頓,jvm中的線程等相關(guān)內(nèi)容,還是十分不錯(cuò)的,需要的朋友可以參考。
    2017-10-10
  • java多線程詳細(xì)總結(jié)

    java多線程詳細(xì)總結(jié)

    以下小編就對(duì)java中的多線程進(jìn)行了詳細(xì)的總結(jié)分析,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助
    2013-10-10
  • SpringBoot掃描不到Controller的解決方案

    SpringBoot掃描不到Controller的解決方案

    這篇文章主要介紹了SpringBoot掃描不到Controller的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • spring-boot集成spring-security的oauth2實(shí)現(xiàn)github登錄網(wǎng)站的示例

    spring-boot集成spring-security的oauth2實(shí)現(xiàn)github登錄網(wǎng)站的示例

    本篇文章主要介紹了spring-boot集成spring-security的oauth2實(shí)現(xiàn)github登錄網(wǎng)站的示例,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2017-10-10

最新評(píng)論