最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Mybatis空值關(guān)聯(lián)的問題解析及解決方案

 更新時間:2024年01月14日 08:44:16   作者:檀越劍指大廠  
這篇文章給大家介紹了Mybatis空值關(guān)聯(lián)的問題解析及解決方案,文中通過代碼示例介紹的非常詳細,對大家的學習或工作有一定的幫助,需要的朋友可以參考下

一.問題描述

1.已知條件

已知 table_1 有 3 個字段 order_no,community_id,post_id

已知 table_2 也有 3 個字段 order_no,community_id,post_id

2.關(guān)聯(lián)條件

現(xiàn)在需要將 table_1 和 table_2 進行關(guān)聯(lián),關(guān)聯(lián)條件是 order_no,community_id,post_id 這 3 個字段,但是 order_no 不為 null,不過 community_id,post_id 是可能為 null,也可能不為 null

3.初步解法

如以下 SQL 所示,發(fā)現(xiàn)結(jié)果為空,沒有查詢到數(shù)據(jù),實際是有數(shù)據(jù),問題在于 community_id 和 post_id 對于空值的處理。

<select id="totalPageInfo" resultType="com.kwan.springbootkwan.entity.dto.CsdnTotalIncomeDTO">
    SELECT t1.receiver_nick_name AS nickName
    , SUM(t1.received_money) AS amount
    FROM table_1 t1 left join table_2 t2
    on t1.order_no = t2.order_no
           AND t1.community_id=t2.community_id
           AND t1.post_id=t2.post_id
    WHERE 1 = 1
    <if test="query.startDate != null">
        AND t1.receive_time <![CDATA[>= #{query.startDate}]]>
        AND t2.create_time <![CDATA[>= #{query.startDate}]]>
    </if>
    <if test="query.endDate != null">
        AND t1.receive_time <![CDATA[<= #{query.endDate}]]>
        AND t2.create_time <![CDATA[<= #{query.endDate}]]>
    </if>
    GROUP BY nickName
    ORDER BY amount DESC
</select>

二.解決方案

1.SQL 如下.

<select id="totalPageInfo" resultType="com.kwan.springbootkwan.entity.dto.CsdnTotalIncomeDTO">
    SELECT t1.receiver_nick_name AS nickName
    , SUM(t1.received_money) AS amount
    FROM table_1 t1 left join table_2 t2
    on t1.order_no = t2.order_no
    <![CDATA[
           AND t1.community_id   <=> t2.community_id
           AND t1.post_id<=> t2.post_id
    ]]>
    WHERE 1 = 1
    <if test="query.startDate != null">
        AND t1.receive_time <![CDATA[>= #{query.startDate}]]>
        AND t2.create_time <![CDATA[>= #{query.startDate}]]>
    </if>
    <if test="query.endDate != null">
        AND t1.receive_time <![CDATA[<= #{query.endDate}]]>
        AND t2.create_time <![CDATA[<= #{query.endDate}]]>
    </if>
    GROUP BY nickName
    ORDER BY amount DESC
</select>

2.解釋說明

在這個 SQL 查詢中,由于 community_id 和 post_id 可能為空,你可以通過使用 COALESCE 函數(shù)或 IFNULL 函數(shù)(具體取決于你使用的數(shù)據(jù)庫系統(tǒng))來處理可能的空值情況。

下面是一種修改方式,假設(shè)你使用的是 MySQL 數(shù)據(jù)庫:

SELECT
    t1.receiver_nick_name AS nickName,
    SUM(t1.received_money) AS amount
FROM
    table_1 t1
LEFT JOIN
    table_2 t2 ON t1.order_no = t2.order_no
                        AND t1.community_id <=> t2.community_id
                        AND t1.post_id <=> t2.post_id
WHERE
    1 = 1
    <if test="query.startDate != null">
        AND t1.receive_time <![CDATA[>= #{query.startDate}]]>
        AND t2.create_time <![CDATA[>= #{query.startDate}]]>
    </if>
    <if test="query.endDate != null">
        AND t1.receive_time <![CDATA[<= #{query.endDate}]]>
        AND t2.create_time <![CDATA[<= #{query.endDate}]]>
    </if>
GROUP BY
    nickName
ORDER BY
    amount DESC

在這里,使用了 <=> 操作符,它在 MySQL 中用于處理 NULL 值的比較。如果 community_id 或 post_id 的其中一個是 NULL,那么 <=> 操作符會返回 true。

請根據(jù)你使用的數(shù)據(jù)庫類型來調(diào)整語法。如果是其他數(shù)據(jù)庫,可能會使用 COALESCE 或 IS NULL 等不同的語法。

到此這篇關(guān)于Mybatis空值關(guān)聯(lián)的問題解析及解決方案的文章就介紹到這了,更多相關(guān)Mybatis空值關(guān)聯(lián)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解Java 類的加載機制

    詳解Java 類的加載機制

    這篇文章主要介紹了Java 類的加載機制,幫助大家更好的理解和學習Java,感興趣的朋友可以了解下
    2020-08-08
  • JavaSE、JavaEE和JavaWeb三大工程目錄詳解

    JavaSE、JavaEE和JavaWeb三大工程目錄詳解

    這篇文章主要給大家介紹了關(guān)于JavaSE、JavaEE和JavaWeb三大工程目錄的相關(guān)資料,很多對java不是很了解的同學在看到課程?綱的時候發(fā)現(xiàn)??出現(xiàn)了JavaSE、JavaEE、JavaME、JavaWEB這些詞,搞得?頭霧?,需要的朋友可以參考下
    2023-07-07
  • spring?boot項目實戰(zhàn)之實現(xiàn)與數(shù)據(jù)庫的連接

    spring?boot項目實戰(zhàn)之實現(xiàn)與數(shù)據(jù)庫的連接

    在我們?nèi)粘5拈_發(fā)過程中,肯定不可避免的會使用到數(shù)據(jù)庫以及SQL?語句,下面這篇文章主要給大家介紹了關(guān)于spring?boot項目實戰(zhàn)之實現(xiàn)與數(shù)據(jù)庫連接的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-05-05
  • SpringBoot-Session管理問題及處理

    SpringBoot-Session管理問題及處理

    本文介紹了SpringBoot中Session管理的多種實現(xiàn)方式,包括內(nèi)存、Redis、數(shù)據(jù)庫和緩存等,并詳細分析了Session失效、并發(fā)訪問、共享、數(shù)據(jù)丟失和性能問題,以及相應的解決策略,如延長超時時間、使用分布式Session、優(yōu)化存取頻率和確保Session安全等
    2026-04-04
  • SpringBoot框架實現(xiàn)支付和轉(zhuǎn)賬功能

    SpringBoot框架實現(xiàn)支付和轉(zhuǎn)賬功能

    在 Spring Boot 框架中實現(xiàn)支付和轉(zhuǎn)賬功能時,涉及到多個細節(jié)和注意點,這些功能通常需要高度的安全性、穩(wěn)定性和可擴展性,本文介紹了實現(xiàn)支付和轉(zhuǎn)賬功能的一些關(guān)鍵點,需要的朋友可以參考下
    2024-08-08
  • SpringBoot獲取ApplicationContext的3種方式

    SpringBoot獲取ApplicationContext的3種方式

    這篇文章主要為大家詳細介紹了SpringBoot獲取ApplicationContext的3種方式,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • Java Flink窗口觸發(fā)器Trigger的用法詳解

    Java Flink窗口觸發(fā)器Trigger的用法詳解

    Trigger(窗口觸發(fā)器)決定了窗口(由 WindowAssigner 產(chǎn)生)什么時候調(diào)用窗口處理函數(shù)。可以根據(jù)指定的時間或數(shù)據(jù)元素條件來決定什么時候觸發(fā)。本文將詳細講講其用法,需要的可以參考一下
    2022-07-07
  • IDEA設(shè)置項目默認保存位置實現(xiàn)方式

    IDEA設(shè)置項目默認保存位置實現(xiàn)方式

    本文主要介紹了如何在IDEA中設(shè)置默認項目目錄,首先打開IDEA設(shè)置界面,任選一個項目,然后在彈出的設(shè)置界面中選擇Appearance下的Default project directory,選擇想要的位置設(shè)置好后,點擊apply和OK即可
    2026-04-04
  • Ibatis配置xml文件CDATA使用方法詳解

    Ibatis配置xml文件CDATA使用方法詳解

    這篇文章主要介紹了Ibatis配置xml文件CDATA使用方法詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-12-12
  • Java響應式編程之Flux與SseEmitter深度解析(附詳細代碼)

    Java響應式編程之Flux與SseEmitter深度解析(附詳細代碼)

    這篇文章主要介紹了Java響應式編程之Flux與SseEmitter深度解析的相關(guān)資料,從需求分析、技術(shù)背景、使用方法、底層原理、性能對比到生產(chǎn)環(huán)境實戰(zhàn),全面解析了這兩種技術(shù)的特點、應用場景及優(yōu)缺點,需要的朋友可以參考下
    2026-01-01

最新評論

四会市| 伊吾县| 石门县| 台南县| 海安县| 霍山县| 霍邱县| 噶尔县| 岳池县| 深圳市| 肥东县| 鞍山市| 玛纳斯县| 曲阳县| 元朗区| 甘洛县| 屯昌县| 莒南县| 朝阳市| 定边县| 汝州市| 阿拉善盟| 澎湖县| 大城县| 谢通门县| 宁津县| 商城县| 怀柔区| 云梦县| 彩票| 濮阳县| 太保市| 斗六市| 共和县| 尉氏县| 两当县| 大安市| 钟山县| 三都| 伊金霍洛旗| 长武县|