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

springboot+mybatis按條件分頁(yè)查詢多張表的項(xiàng)目實(shí)踐

 更新時(shí)間:2025年09月05日 10:23:25   作者:abcnull  
針對(duì)MySQL中多表分頁(yè)查詢需求,推薦使用JOIN進(jìn)行多表關(guān)聯(lián),結(jié)合PageHelper分頁(yè)插件,通過(guò)MySQL resultMap和JOIN語(yǔ)句實(shí)現(xiàn)高效查詢,感興趣的可以了解一下

背景

假如同 mysql 數(shù)據(jù)源下有如下幾張表:

  • 用戶基礎(chǔ)信息表
  • 用戶地址表
  • 用戶學(xué)歷信息表

我希望做分頁(yè)查詢用戶數(shù)據(jù),用戶數(shù)據(jù)為各個(gè)表內(nèi)信息的匯總,并且這個(gè)分頁(yè)查詢會(huì)根據(jù)各種條件來(lái)查詢

那么通常該如何做呢?

方案推薦

一般情況下通用推薦(下面主講):
使用 join 進(jìn)行多表連接查詢,使用 pagehelper 分頁(yè)插件,通過(guò) MyBatis 的 <resultMap> 和 JOIN 語(yǔ)句實(shí)現(xiàn)多表關(guān)聯(lián),使用 MyBatis 動(dòng)態(tài) SQL 標(biāo)簽(如 )處理?xiàng)l件組合

其他方案:

  • 方式一:將高頻查詢字段冗余到主表,形成寬表,此方案犧牲空間換取性能,以后直接分頁(yè)查詢一張表即可
  • 方式二:分步驟來(lái)查詢,在代碼層面進(jìn)行數(shù)據(jù)組裝

創(chuàng)建 DTO

創(chuàng)建 dto 做查詢數(shù)據(jù)接收的對(duì)象

public class UserQueryDTO {
    private String name;        // 用戶姓名(模糊查詢)
    private String province;    // 省份條件 
    private String degree;      // 學(xué)歷條件 
}

創(chuàng)建 Mapper

創(chuàng)建一個(gè) mapper 接口 selectUserWithConditions

創(chuàng)建對(duì)應(yīng) xml

<!-- UserMapper.xml  -->
<select id="selectUserWithConditions" resultMap="UserResultMap">
    SELECT u.id,  u.name,  a.province,  e.degree  
    FROM user u 
    LEFT JOIN address a ON u.id  = a.user_id  
    LEFT JOIN education e ON u.id  = e.user_id  
    <where>
        <if test="name != null and name != ''">
            u.name  LIKE CONCAT('%', #{name}, '%')
        </if>
        <if test="province != null and province != ''">
            AND a.province  = #{province}
        </if>
        <if test="degree != null and degree != ''">
            AND e.degree  = #{degree}
        </if>
    </where>
</select>
 
<resultMap id="UserResultMap" type="UserVO">
    <id property="id" column="id"/>
    <result property="name" column="name"/>
    <result property="province" column="province"/>
    <result property="degree" column="degree"/>
</resultMap>

Service 代碼

// 使用PageHelper(需在pom.xml 添加依賴)
public PageInfo<UserVO> queryUsers(UserQueryDTO dto) {
    PageHelper.startPage(dto.getPageNum(),  dto.getPageSize()); 
    List<UserVO> list = userMapper.selectUserWithConditions(dto); 
    return new PageInfo<>(list);
}

到此這篇關(guān)于springboot+mybatis按條件分頁(yè)查詢多張表的項(xiàng)目實(shí)踐的文章就介紹到這了,更多相關(guān)springboot mybatis 條件多表分頁(yè)查詢 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • Java與WebUploader相結(jié)合實(shí)現(xiàn)文件上傳功能(實(shí)例代碼)

    Java與WebUploader相結(jié)合實(shí)現(xiàn)文件上傳功能(實(shí)例代碼)

    這篇文章主要介紹了Java結(jié)合WebUploader實(shí)現(xiàn)文件上傳功能,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-03-03
  • 詳解springboot讀取yml配置的幾種方式

    詳解springboot讀取yml配置的幾種方式

    這篇文章主要介紹了詳解springboot讀取yml配置的幾種方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • 詳解SpringBoot優(yōu)雅編碼之Lombok加持

    詳解SpringBoot優(yōu)雅編碼之Lombok加持

    這篇文章主要介紹了詳解SpringBoot優(yōu)雅編碼之Lombok加持,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-06-06
  • SpringBoot配置外部靜態(tài)資源映射問(wèn)題

    SpringBoot配置外部靜態(tài)資源映射問(wèn)題

    這篇文章主要介紹了SpringBoot配置外部靜態(tài)資源映射問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • Jenkins環(huán)境搭建之下載與安裝過(guò)程

    Jenkins環(huán)境搭建之下載與安裝過(guò)程

    Jenkins是一個(gè)功能強(qiáng)大的應(yīng)用程序,允許持續(xù)集成和持續(xù)交付項(xiàng)目,集成Jenkins可以用于一些測(cè)試和部署技術(shù),對(duì)Jenkins環(huán)境搭建之下載與安裝過(guò)程感興趣的朋友跟隨小編一起看看吧
    2021-12-12
  • 淺析java class 文件

    淺析java class 文件

    以下是對(duì)java中的class文件進(jìn)行了詳細(xì)的介紹,需要的朋友可以過(guò)來(lái)參考下
    2013-08-08
  • IDEA打包maven多模塊相互依賴項(xiàng)目全過(guò)程

    IDEA打包maven多模塊相互依賴項(xiàng)目全過(guò)程

    這篇文章主要介紹了IDEA打包maven多模塊相互依賴項(xiàng)目全過(guò)程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • SpringBoot+SpringSecurity實(shí)現(xiàn)認(rèn)證的流程詳解

    SpringBoot+SpringSecurity實(shí)現(xiàn)認(rèn)證的流程詳解

    這篇文章主要介紹了SpringBoot+SpringSecurity實(shí)現(xiàn)認(rèn)證的流程,文中通過(guò)代碼示例和圖文結(jié)合的方式講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-05-05
  • mybatis中#{}和${}的區(qū)別詳解

    mybatis中#{}和${}的區(qū)別詳解

    本文主要介紹了mybatis中#{}和${}的區(qū)別詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • springboot創(chuàng)建文件夾失敗的解決

    springboot創(chuàng)建文件夾失敗的解決

    這篇文章主要介紹了springboot創(chuàng)建文件夾失敗的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01

最新評(píng)論

油尖旺区| 合江县| 通城县| 东乌珠穆沁旗| 东阳市| 黎川县| 磐石市| 禄丰县| 陆河县| 禹城市| 贺州市| 镇远县| 北安市| 读书| 晋城| 沅陵县| 克什克腾旗| 松原市| 镇雄县| 平潭县| 茶陵县| 景德镇市| 南华县| 上饶县| 琼海市| 临汾市| 嘉兴市| 辉县市| 盱眙县| 二连浩特市| 德州市| 朝阳市| 嘉善县| 昌图县| 昭苏县| 永平县| 蓝山县| 烟台市| 库伦旗| 茂名市| 黄冈市|