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

springboot使用mybatis一對多的關(guān)聯(lián)查詢問題記錄

 更新時(shí)間:2022年01月26日 16:53:06   作者:__莫等閑  
這篇文章主要介紹了springboot使用mybatis一對多的關(guān)聯(lián)查詢問題記錄,剛好最近有個(gè)需求需要做到關(guān)聯(lián)的查詢,時(shí)間也算充足,所以用sql來寫,于是踩了很久坑,終于跳出來了,小小記錄一下

springboot使用mybatis一對多的關(guān)聯(lián)查詢

由于剛開始寫java不久,對sql語句的熟悉度還是不夠熟練,雖然現(xiàn)在使用的mybatisPlus比較多,但我始終覺得sql不能忘也不能不用,剛好最近有個(gè)需求需要做到關(guān)聯(lián)的查詢,時(shí)間也算充足,所以用sql來寫,于是踩了很久坑,終于跳出來了,小小記錄一下。

一對多

# 我這里是一對多查詢,一張主表兩張副表,最后還要有一張VO表(就是做關(guān)聯(lián)映射用的),主表和副表的實(shí)體我就不貼了,以下是VO實(shí)體

在這里插入圖片描述

這是我的controller

@RequestMapping(value = "/queryChartAll", method = RequestMethod.GET)
public R<?> queryChartAll(){
    List<StatementEnteringVO> statementEnteringVO = statementEnteringMapper.queruMapperPage();
    if(statementEnteringVO != null){
        return R.data(statementEnteringVO);
    }else{
        return R.fail(ResultCode.ERROR);
    }
}

mapper

public interface StatementEnteringMapper extends BaseMapper<StatementEntering> {
    List<StatementEnteringVO> queruMapperPage();
}

mapper.xml(注意了,最難受也是最坑的)

為了展示方便,我貼少點(diǎn)的字段,不然老長的代碼看球不明白,再注一下:一對多使用collection,一對一使用association,文章主講一對多的。所以也不對association做解釋了,感興趣的朋友可以自己去了解一下,用法是一樣的。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ld.ldstat.mapper.StatementEnteringMapper">
    <resultMap id="queryChartAllTwo" type="com.ld.ldstat.vo.StatementEnteringVO">
        <id property="id" jdbcType="BIGINT" column="sid"></id>
        <result property="theDate" jdbcType="DATE" column="the_date"></result>
        <result property="deptName" jdbcType="VARCHAR" column="dept_name"></result>
        <result property="deptId" jdbcType="BIGINT" column="dept_id"></result>
        
        <!--這里是對應(yīng)vo實(shí)體的表1實(shí)體-->
        <collection property="cashCar" javaType="java.util.List" ofType="com.ld.ldstat.entity.CashCar">
            <id property="id" jdbcType="BIGINT" column="cid"></id>
            <result property="parentId" jdbcType="BIGINT" column="c_parent_id"/>
            <result property="projectName" jdbcType="VARCHAR" column="c_project_name"/>
            <result property="ninetyWithin" jdbcType="INTEGER" column="ninety_within"/>
            <result property="ninetyExcept" jdbcType="INTEGER" column="ninety_except"/>
            <result property="cashCar" jdbcType="INTEGER" column="cash_car"/>
        </collection>
        
        <!--這里是對應(yīng)vo實(shí)體的表2實(shí)體-->
        <collection property="subtotalAll" ofType="com.ld.ldstat.entity.SubtotalAll">
            <id property="id" jdbcType="BIGINT" column="aid"></id>
            <result property="parentId" jdbcType="BIGINT" column="a_parent_id"/>
            <result property="projectName" jdbcType="VARCHAR" column="a_project_name"/>
            <result property="subtotalType" jdbcType="INTEGER" column="subtotal_type"/>
            <result property="task" jdbcType="INTEGER" column="task"/>
            <result property="theDay" jdbcType="INTEGER" column="the_day"/>
        </collection>
    </resultMap>
    <select id="queruMapperPage" resultMap="queryChartAllTwo">
        SELECT
        se.id sid,se.the_date,se.dept_name,
        ca.id cid,ca.project_name c_project_name,ca.parent_id c_parent_id,ca.ninety_Within,ca.ninety_except,ca.cash_car,
        sa.id aid,sa.project_name a_project_name,sa.parent_id a_parent_id,sa.task,sa.the_day
        FROM
        statement_entering se
        LEFT JOIN cash_car ca on se.id = ca.parent_id
        LEFT JOIN subtotal_all sa on se.id = sa.parent_id
        
        <!--        條件可根據(jù)自己的需求增加啦-->
    </select>
</mapper>

以下是需要注意的點(diǎn)(我就是在這里踩了好久的坑)

以下sql用的是左連接語句LEFT JOIN,具體的sql語句我也不解釋了,因?yàn)橐私獾奶嗔耍緦擂巍?/p>

這里的這些字段必須要使用別名,為啥?因?yàn)閹讖埍淼淖侄蜗嗤詴?huì)出現(xiàn)覆蓋的問題,比如我副表1和副表2同時(shí)存在一個(gè)相同字段project_name,如果不給其聲明別名,副表2該字段的數(shù)據(jù)會(huì)被副表1的該字段覆蓋掉,原理我也解釋不清楚,哈哈??!

在這里插入圖片描述

對應(yīng)的映射字段要使用別名,上圖

在這里插入圖片描述

線劃的丑了些,將就吧!

看下最終獲取到的數(shù)據(jù)結(jié)構(gòu)

在這里插入圖片描述

完美,理想中的效果。。。

至于最終效果圖為啥這么多null,不用懷疑,這些是我沒有寫對應(yīng)的映射

到此這篇關(guān)于springboot使用mybatis一對多的關(guān)聯(lián)查詢的文章就介紹到這了,更多相關(guān)springboot使用mybatis關(guān)聯(lián)查詢內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java SelectableChannel的使實(shí)例用法講解

    java SelectableChannel的使實(shí)例用法講解

    在本篇文章里小編給大家整理的是一篇關(guān)于java SelectableChannel的使實(shí)例用法講解內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。
    2021-03-03
  • Spring boot連接MySQL 8.0可能出現(xiàn)的問題

    Spring boot連接MySQL 8.0可能出現(xiàn)的問題

    這篇文章主要給大家介紹了關(guān)于Spring boot連接MySQL 8.0可能出現(xiàn)的問題,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-10-10
  • Springboot中LocalDateTime對象返回給前端格式化解決方案

    Springboot中LocalDateTime對象返回給前端格式化解決方案

    在項(xiàng)目開發(fā)當(dāng)中前后端使用什么樣的時(shí)間格式,是一個(gè)值得關(guān)注的問題,這篇文章主要給大家介紹了關(guān)于Springboot中LocalDateTime對象返回給前端格式化的解決方案,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-04-04
  • SpringBoot環(huán)境Druid數(shù)據(jù)源使用及特點(diǎn)

    SpringBoot環(huán)境Druid數(shù)據(jù)源使用及特點(diǎn)

    Druid 是目前比較流行的高性能的,分布式列存儲(chǔ)的OLAP框架(具體來說是MOLAP)。本文給大家分享SpringBoot環(huán)境Druid數(shù)據(jù)源使用及特點(diǎn)介紹,感興趣的朋友跟隨小編一起看看吧
    2021-07-07
  • ServletWebServerApplicationContext創(chuàng)建Web容器Tomcat示例

    ServletWebServerApplicationContext創(chuàng)建Web容器Tomcat示例

    這篇文章主要為大家介紹了ServletWebServerApplicationContext創(chuàng)建Web容器Tomcat示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • MyBatis自動(dòng)生成Where語句

    MyBatis自動(dòng)生成Where語句

    這篇文章主要介紹了MyBatis自動(dòng)生成Where語句的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-08-08
  • Spring boot AOP通過XML配置文件聲明的方法

    Spring boot AOP通過XML配置文件聲明的方法

    這篇文章主要介紹了Spring boot AOP通過XML配置文件聲明,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • 基于Spring框架的Shiro配置方法

    基于Spring框架的Shiro配置方法

    這篇文章主要介紹了基于Spring框架的Shiro配置方法,需要的朋友可以參考下
    2014-10-10
  • JAVA隨機(jī)數(shù)隨機(jī)字母的實(shí)現(xiàn)(微信搶紅包小練習(xí))

    JAVA隨機(jī)數(shù)隨機(jī)字母的實(shí)現(xiàn)(微信搶紅包小練習(xí))

    這篇文章主要介紹了JAVA隨機(jī)數(shù)隨機(jī)字母的實(shí)現(xiàn)(微信搶紅包小練習(xí)),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • Java中關(guān)于http請求獲取FlexManager某設(shè)備分組監(jiān)控點(diǎn)

    Java中關(guān)于http請求獲取FlexManager某設(shè)備分組監(jiān)控點(diǎn)

    這篇文章主要介紹了Java中關(guān)于http請求獲取FlexManager某設(shè)備分組監(jiān)控點(diǎn),本文僅僅介紹了使用http請求獲取FlexManager平臺(tái)某個(gè)FBox盒子即某設(shè)備的監(jiān)控點(diǎn)分組的分組下的所有監(jiān)控點(diǎn)信息,需要的朋友可以參考下
    2022-10-10

最新評論

上栗县| 江陵县| 岳阳市| 原平市| 九龙坡区| 恩平市| 文化| 新巴尔虎右旗| 金堂县| 沽源县| 鸡东县| 高青县| 西充县| 犍为县| 威信县| 丰镇市| 桦南县| 汪清县| 汽车| 高清| 皋兰县| 广南县| 栾川县| 宁化县| 彰武县| 丰原市| 布拖县| 海盐县| 崇明县| 乌恰县| 那坡县| 东港市| 西吉县| 邓州市| 大同市| 吴川市| 东乡| 巴东县| 肃北| 应城市| 雷山县|