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

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

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

一.問題描述

1.已知條件

已知 table_1 有 3 個(gè)字段 order_no,community_id,post_id

已知 table_2 也有 3 個(gè)字段 order_no,community_id,post_id

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

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

3.初步解法

如以下 SQL 所示,發(fā)現(xiàn)結(jié)果為空,沒有查詢到數(shù)據(jù),實(shí)際是有數(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.解釋說明

在這個(gè) 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 的其中一個(gè)是 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 類的加載機(jī)制

    詳解Java 類的加載機(jī)制

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

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

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

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

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

    SpringBoot-Session管理問題及處理

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

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

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

    SpringBoot獲取ApplicationContext的3種方式

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

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

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

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

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

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

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

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

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

最新評論

长沙县| 望都县| 苗栗县| 赣州市| 乌拉特前旗| 特克斯县| 垣曲县| 来凤县| 临颍县| 灌阳县| 黄山市| 朔州市| 什邡市| 遂昌县| 沾益县| 北碚区| 崇明县| 博客| 沂水县| 闸北区| 蒙自县| 西青区| 五河县| 青州市| 云浮市| 隆昌县| 乌兰浩特市| 连平县| 连州市| 察隅县| 阿荣旗| 宜兴市| 宽城| 卢湾区| 清水河县| 唐山市| 突泉县| 海晏县| 桂林市| 德令哈市| 石泉县|