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

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

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

背景

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

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

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

那么通常該如何做呢?

方案推薦

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

其他方案:

  • 方式一:將高頻查詢字段冗余到主表,形成寬表,此方案犧牲空間換取性能,以后直接分頁查詢一張表即可
  • 方式二:分步驟來查詢,在代碼層面進(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按條件分頁查詢多張表的項(xiàng)目實(shí)踐的文章就介紹到這了,更多相關(guān)springboot mybatis 條件多表分頁查詢 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • 解讀thymeleaf模板引擎中th:if的使用

    解讀thymeleaf模板引擎中th:if的使用

    這篇文章主要介紹了解讀thymeleaf模板引擎中th:if的使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • Spring編程式和聲明式事務(wù)實(shí)例講解小結(jié)

    Spring編程式和聲明式事務(wù)實(shí)例講解小結(jié)

    這篇文章主要介紹了Spring編程式和聲明式事務(wù)實(shí)例講解小結(jié),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • 一文詳解MVCC的執(zhí)行原理

    一文詳解MVCC的執(zhí)行原理

    MVCC是一種并發(fā)控制機(jī)制,用于解決數(shù)據(jù)庫(kù)并發(fā)訪問中,數(shù)據(jù)一致性問題,它通過在讀寫操作期間保存多個(gè)數(shù)據(jù)版本,以提供并發(fā)事務(wù)間的隔離性,本文將和大家簡(jiǎn)單聊聊MVCC的執(zhí)行原理,需要的朋友可以參考下
    2023-12-12
  • Spring boot實(shí)現(xiàn)一個(gè)簡(jiǎn)單的ioc(1)

    Spring boot實(shí)現(xiàn)一個(gè)簡(jiǎn)單的ioc(1)

    這篇文章主要為大家詳細(xì)介紹了Spring boot實(shí)現(xiàn)一個(gè)簡(jiǎn)單的ioc,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • Java多線程實(shí)現(xiàn)之Callable詳解

    Java多線程實(shí)現(xiàn)之Callable詳解

    這篇文章主要介紹了Java多線程實(shí)現(xiàn)之Callable詳解,Callable是一個(gè)接口,用于實(shí)現(xiàn)多線程,與實(shí)現(xiàn)Runnable類似,但是功能更強(qiáng)大,通過實(shí)現(xiàn)Callable接口,我們需要重寫call()方法,該方法可以在任務(wù)結(jié)束后提供一個(gè)返回值,需要的朋友可以參考下
    2023-08-08
  • java 下執(zhí)行mysql 批量插入的幾種方法及用時(shí)

    java 下執(zhí)行mysql 批量插入的幾種方法及用時(shí)

    java 下執(zhí)行mysql 批量插入的幾種方法及用時(shí),1000次插入方法的比較。
    2013-04-04
  • Ribbon負(fù)載均衡服務(wù)調(diào)用的示例詳解

    Ribbon負(fù)載均衡服務(wù)調(diào)用的示例詳解

    Rbbo其實(shí)就是一個(gè)軟負(fù)載均衡的客戶端組件,他可以和其他所需請(qǐng)求的客戶端結(jié)合使用,這篇文章主要介紹了Ribbon負(fù)載均衡服務(wù)調(diào)用案例代碼,需要的朋友可以參考下
    2023-01-01
  • java多態(tài)機(jī)制原理特點(diǎn)詳解

    java多態(tài)機(jī)制原理特點(diǎn)詳解

    在本篇文章里小編給大家分享的是關(guān)于java多態(tài)機(jī)制原理特點(diǎn)詳解,有需要的朋友們可以跟著學(xué)習(xí)下。
    2020-02-02
  • Spring FactoriesLoader機(jī)制實(shí)例詳解

    Spring FactoriesLoader機(jī)制實(shí)例詳解

    這篇文章主要介紹了Spring FactoriesLoader機(jī)制實(shí)例詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • SpringBoot內(nèi)置數(shù)據(jù)源的持久化與解決方案

    SpringBoot內(nèi)置數(shù)據(jù)源的持久化與解決方案

    數(shù)據(jù)源的配置 我們先基于SpringBoot默認(rèn)的HikariDataSource數(shù)據(jù)源,導(dǎo)入JDBC場(chǎng)景,看看SpringBoot幫我們自動(dòng)配置了什么,下面我們來了解SpringBoot內(nèi)置數(shù)據(jù)源持久化
    2022-07-07

最新評(píng)論