1. 程式人生 > >學習Mybatis框架(五)—高階對映(多表關聯查詢)

學習Mybatis框架(五)—高階對映(多表關聯查詢)

本節主要對訂單商品資料模型進行分析。並分析以下2個點:
高階對映:(瞭解)
實現一對一查詢、一對多、多對多查詢。
延遲載入

高階對映

訂單商品資料模型

這裡寫圖片描述
1.1 資料模型分析思路
1、每張表記錄的資料內容
2、每張表重要的欄位設定(非空欄位、外來鍵欄位)
3、資料庫級別表與表之間的關係(外來鍵關係)
4、表與表之間的業務關係(建立在某個業務意義基礎上去分析)
1.2 資料模型分析
這裡寫圖片描述
使用者表user:
記錄了購買商品的使用者資訊

訂單表:orders
記錄了使用者所建立的訂單(購買商品的訂單)

訂單明細表:orderdetail:
記錄了訂單的詳細資訊即購買商品的資訊

商品表:items
記錄了商品資訊

orders和user:
orders—>user:一個訂單隻由一個使用者建立,一對一
user—->orders:一個使用者可以建立多個訂單,一對多

orders和orderdetail:
orders—>orderdetail:一個訂單可以包括 多個訂單明細,因為一個訂單可以購買多個商品,每個商品的購買資訊在orderdetail記錄,一對多關係
orderdetail–> orders:一個訂單明細只能包括在一個訂單中,一對一

orderdetail和items:
orderdetail—>itesms:一個訂單明細只對應一個商品資訊,一對一
items–> orderdetail:一個商品可以包括在多個訂單明細 ,一對多

再分析資料庫級別沒有關係的表之間是否有業務關係:
orders和items:
orders和items之間可以通過orderdetail表建立 關係。

一對一關聯對映

需求:查詢訂單資訊,關聯查詢建立訂單的使用者資訊
方式一:resultType
第一步:建立pojo—->OrdersCustom

/ * 作用:將sql查詢的 訂單orders和使用者user結果集 全部成功對映到 pojo中,
 但是Orders.java中屬性包含不全,因此在寫一個pojo類在繼承Orders基礎上,補充新增其它屬性資訊,
 注意讓此類繼承包括欄位較多的pojo類,比如這裡繼承Orders而不是user,
因為查詢結果集中user屬性全部有5
個,Orders只有3個 */ package cn.itcast.mybatis.pojo; public class OrdersCustom extends Orders{ //繼承Orders是為了補充新增以下使用者屬性 /*USER.username, USER.sex, USER.address */ private String username; private String sex; private String address; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } }

第二步:在OrdersMapperCustom.xml中新增如下sql語句

確定查詢的主表:訂單表
確定查詢的關聯表:使用者表
關聯查詢使用內連結?還是外連結?
:由於orders表中有一個外來鍵(user_id),通過外來鍵關聯查詢使用者表只能查詢出一條記錄,可以使用內連結。

<!-- 第一種:resultType:查詢訂單關聯查詢使用者資訊 -->
    <select id="findOrderUser" resultType="cn.itcast.mybatis.pojo.OrdersCustom">
    SELECT
        orders.* ,
        USER.username,
        USER.sex,
        USER.address
    FROM
        orders,  
        USER 
    where 
        orders.user_id=user.id
    </select>

第三步:在介面OrdersMapperCustom.java中新增

    //查詢訂單關聯查詢使用者資訊
    public List<OrdersCustom>findOrderUser()throws Exception;

第四步:在OrdersMapperCustomTest.java中新增測試

@Test
    public void testFindOrdersUser() throws Exception {
        //得到會話sqlSession
        SqlSession sqlSession=sqlSessionFactory.openSession();
        //建立代理物件
        OrdersMapperCustom ordersMapperCustom=sqlSession.getMapper(OrdersMapperCustom.class);
        //呼叫mapper的方法
        List<OrdersCustom>list=ordersMapperCustom.findOrderUser();
        System.out.println(list); 
        sqlSession.close();
    }

方式二:resultMap
第一步:建立pojo—->OrdersCustom(同上)
第二步:在OrdersMapperCustom.xml中新增如下配置語句

<!-- 定義一個resultMap,訂單查詢 關聯 使用者的 ,將整個查詢的結果對映到cn.itcast.mybatis.pojo.Orders中-->
<resultMap type="cn.itcast.mybatis.pojo.Orders" id="OrdersUserResultMap">

<!-- (1) 配置訂單資訊 -->
        <!--  資料庫表orders對應 pojo中的Orders.java -->
<!--  id:唯一標識
         column:訂單資訊的唯 一標識 列
         property:訂單資訊的唯 一標識 列所對映到Orders中哪個屬性
      result:普通標識   -->

    <id column="id" property="id"/>
    <result column="user_id" property="userId"/> 
    <result column="number" property="number"/>
    <result column="createtime" property="createtime"/>
    <result column="note" property="note"/>

<!-- (2)配置關聯使用者資訊 -->
      <!--   資料庫表user對應 pojo中的User.java -->
<!-- association:用於對映關聯查詢單個物件的資訊
            property:要將關聯查詢的使用者資訊對映到Orders中哪個屬性
            javaType:對映到user的哪個屬性-->

  <association property="user"  javaType="cn.itcast.mybatis.pojo.User">
            <!-- id:關聯查詢使用者的唯 一標識
                   column:指定唯 一標識使用者資訊的列
                 result:普通標識
             -->
            <id column="user_id" property="id"/> 
            <result column="username" property="username"/>
            <result column="sex" property="sex"/>
            <result column="address" property="address"/>   
  </association> 
</resultMap>

 <!--第二種:舉例一對一: ResultMap:查詢訂單關聯查詢使用者資訊 -->
 <select id="findOrdersUserResultMap" resultMap="OrdersUserResultMap">
    SELECT
        orders.* ,
        USER.username,
        USER.sex,
        USER.address
    FROM
        orders,
        USER 
    WHERE 
        orders.user_id=user.id
</select>

第三步:在介面OrdersMapperCustom.java中新增

//可查詢訂單關聯查詢使用者使用resultMap
    public List<Orders>findOrdersUserResultMap()throws Exception;

第四步:在OrdersMapperCustomTest.java中測試

@Test
    public void testFindOrdersUserResultMap() throws Exception {
        //得到會話sqlSession
        SqlSession sqlSession=sqlSessionFactory.openSession();
        //建立代理物件
        OrdersMapperCustom ordersMapperCustom=sqlSession.getMapper(OrdersMapperCustom.class);
        //呼叫mapper的方法,返回對映在pojo 中Orders(裡面補充了User user)
        List<Orders>list=ordersMapperCustom.findOrdersUserResultMap();
        System.out.println(list); 
        sqlSession.close();
    }

resultType和resultMap實現一對一查詢小結
實現一對一查詢:
resultType:使用resultType實現較為簡單,如果pojo中沒有包括查詢出來的列名,需要增加列名對應的屬性,即可完成對映。
如果沒有查詢結果的特殊要求建議使用resultType。

resultMap:需要單獨定義resultMap,實現有點麻煩,如果對查詢結果有特殊的要求,使用resultMap可以完成將關聯查詢對映pojo的屬性中。

resultMap可以實現延遲載入,resultType無法實現延遲載入。

一對多關聯對映

需求:查詢訂單orders關聯的訂單明細資訊orderdetails
第一步:建立pojo—->Orders.java

//表orders
public class Orders {
    private Integer id;
    private Integer userId;
    private String number;
    private Date createtime;
    private String note;

    //新增user使用者屬性資訊,將關聯的使用者資訊對映到pojo(User user)的屬性中
    private User user;

    //新增訂單明細 Orderdetail的屬性資訊,將關聯的訂單明細資訊對映到此order類
    private List<Orderdetail>orderdetails;
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public Integer getUserId() {
        return userId;
    }
    public void setUserId(Integer userId) {
        this.userId = userId;
    }
    public String getNumber() {
        return number;
    }
    public void setNumber(String number) {
        this.number = number == null ? null : number.trim();
    }
    public Date getCreatetime() {
        return createtime;
    }
    public void setCreatetime(Date createtime) {
        this.createtime = createtime;
    }
    public String getNote() {
        return note;
    }
    public void setNote(String note) {
        this.note = note == null ? null : note.trim();
    } 
    //使用者的getter setter方法
    public User getUser() {
        return user;
    }
    public void setUser(User user) {
        this.user = user; 
    }
    //新增訂單明細的getter setter方法
    public List<Orderdetail> getOrderdetails() {
        return orderdetails;
    }
    public void setOrderdetails(List<Orderdetail> orderdetails) {
        this.orderdetails = orderdetails;
    }
}

使用resultType將上邊的 查詢結果對映到pojo中,訂單資訊的就是重複。
對orders對映不能出現重複記錄。

在orders.java類中新增List<orderDetail>orderDetails屬性。
最終會將訂單資訊對映到orders中,訂單所對應的訂單明細對映到orders中的orderDetails屬性中。

第二步:在OrdersMapperCustom.xml中新增如下配置語句
sql語句:
確定主查詢表:訂單表
確定關聯查詢表:訂單明細表
在一對一查詢基礎上新增訂單明細表關聯即可。

<!-- 訂單及訂單明細的resultMap,其中(1)(2)和上面一樣,可以採用繼承 -->
<resultMap type="cn.itcast.mybatis.pojo.Orders" id="OrdersAndOrderDetailResultMap"
extends="OrdersUserResultMap">
<!-- (1) 配置訂單資訊 -->
         <!--  資料庫表orders對應 pojo中的Orders.java -->
<!-- (2) 配置關聯使用者資訊 -->     
        <!--  資料庫表user對應 pojo中的User.java -->
<!-- (3) 配置訂單明細資訊 -->
         <!-- 資料庫表orderdetail對應 pojo中的Orderdetail.java -->

    <!-- 由於一條訂單關聯查詢多個訂單明細,因此採用collection集合對映 
    collection:將關聯查詢到的多條記錄對映到集合物件中
    property:將關聯查詢到的多條記錄對映到cn.itcast.mybatis.pojo.Orders中那個屬性中
    ofType:指定對映到list集合屬性中pojo的型別-->

    <collection property="orderdetails" ofType="cn.itcast.mybatis.pojo.Orderdetail">
        <id column="orderdetail_id" property="id"/>
        <result column="items_id" property="itemsId"/>
        <result column="items_num" property="itemsNum"/>
        <result column="orders_id" property="ordersId"/>
    </collection>     
</resultMap>


<!--舉例一對多: ResultMap:查詢 訂單 關聯 訂單明細 資訊 -->
 <select id="findOrdersAndOrderDetailResultMap" resultMap="OrdersAndOrderDetailResultMap">
    SELECT
        orders.* ,
        USER.username,
        USER.sex,
        USER.address,
        orderdetail.id orderdetail_id,<!--別名-->
        orderdetail.orders_id,
        orderdetail.items_id,
        orderdetail.items_num
    FROM
        orders,
        USER,
        orderdetail 
    WHERE 
        orders.user_id=user.id AND orderdetail.orders_id=orders.id
</select>

第三步:在介面OrdersMapperCustom.java中新增

//查詢訂單關聯訂單明細資訊
    public List<Orders>findOrdersAndOrderDetailResultMap()throws Exception;

第四步:在OrdersMapperCustomTest.java中新增測試程式碼:

@Test
    public void testFindOrdersAndOrderDetailResultMap() throws Exception {
        //得到會話sqlSession
        SqlSession sqlSession=sqlSessionFactory.openSession();
        //建立代理物件
        OrdersMapperCustom ordersMapperCustom=sqlSession.getMapper(OrdersMapperCustom.class);
        //呼叫mapper的方法,返回對映在pojo 中Orders(裡面補充了Orderdetail orderDetails)
        List<Orders>list=ordersMapperCustom.findOrdersAndOrderDetailResultMap();
        System.out.println(list); 
        sqlSession.close();
    }

多對多關聯對映

需求:查詢使用者及使用者購買商品資訊。

第一步:建立pojo—->User.java,Orders.java,Orderdetail.java,Items.java
對映思路:

  • 將使用者資訊對映到user中
  • 在user類中新增訂單列表屬性private List<Orders>orderList;,將使用者建立的訂單對映到ordersList
  • 在Orders中新增訂單明細列表屬性
    private List<Orderdetail>orderdetails;,將訂單的明細對映到orderdetails
  • 在Orderdetail中新增Items屬性private Items items,將訂單明細所對應的商品對映到Items

第二步:在OrdersMapperCustom.xml中新增如下配置語句

<!-- 查詢使用者和購買商品的resultMap -->
<resultMap type="cn.itcast.mybatis.pojo.User" id="UserAndItemsResultMap">
<!-- (1) 配置使用者資訊 --> 
        <id column="user_id" property="id"/>
        <result column="username" property="username"/>
        <result column="sex" property="sex"/>
        <result column="address" property="address"/>       
<!-- (2) 配置訂單資訊
        一個使用者對應多個訂單,使用collection對映 -->     
 <collection property="orderList" ofType="cn.itcast.mybatis.pojo.Orders">
        <id column="id" property="id"/>
        <result column="user_id" property="userId"/>
        <result column="number" property="number"/>
        <result column="createtime" property="createtime"/>
        <result column="note" property="note"/>
    <!-- (3) 配置訂單明細資訊  
                                     一個訂單包括 多個訂單明細 -->       
    <collection property="orderdetails" ofType="cn.itcast.mybatis.pojo.Orderdetail">
            <id column="orderdetail_id" property="id"/>
            <result column="items_id" property="itemsId"/>
            <result column="items_num" property="itemsNum"/>
            <result column="orders_id" property="ordersId"/>        
            <!-- (4) 配置商品資訊
                                                  一個訂單明細對應一個商品-->
            <association property="items" javaType="cn.itcast.mybatis.pojo.Items">
                <id column="items_id" property="id"/>
                <result column="items_name" property="name"/>
                <result column="items_detail" property="detail"/>
                <result column="items_price" property="price"/>
            </association>           
    </collection>  
</collection>

</resultMap>


<!-- 舉例多對多:ResultMap:查詢 使用者 購買的商品資訊 -->
<select id="findUserAndItemsResultMap" resultMap="UserAndItemsResultMap">
    SELECT 
      orders.*,
      USER.username,
      USER.sex,
      USER.address,

      orderdetail.id orderdetail_id,
      orderdetail.items_id,
      orderdetail.items_num,
      orderdetail.orders_id,

      items.name items_name,
      items.detail items_detail,
      items.price items_price
    FROM
      orders,
      USER,
      orderdetail,
      items
    WHERE 
        orders.user_id = user.id AND orderdetail.orders_id=orders.id 
        AND orderdetail.items_id=items.id
</select>

第三步:在介面OrdersMapperCustom.java中新增

//查詢使用者購買的商品資訊
    public List<User>findUserAndItemsResultMap()throws Exception;

第四步:在OrdersMapperCustomTest.java中測試

@Test
    public void testFindUserAndItemsResultMap() throws Exception {
        //得到會話sqlSession
        SqlSession sqlSession=sqlSessionFactory.openSession();
        //建立代理物件
        OrdersMapperCustom ordersMapperCustom=sqlSession.getMapper(OrdersMapperCustom.class);
        //呼叫mapper的方法,返回對映在pojo 中Orders(裡面補充了Orderdetail orderdetails)
        List<User>list=ordersMapperCustom.findUserAndItemsResultMap();
        System.out.println(list); 
        sqlSession.close();
    }

延遲載入

定義
resultMap可以實現高階對映(使用association、collection實現一對一及一對多對映),association、collection具備延遲載入功能。

延遲載入:先從單表查詢、需要時再從關聯表去關聯查詢,大大提高 資料庫效能,因為查詢單表要比關聯查詢多張錶速度要快。

如果查詢訂單並且關聯查詢使用者資訊。如果先查詢訂單資訊即可滿足要求,當我們需要查詢使用者資訊時再查詢使用者資訊。把對使用者資訊的按需去查詢就是延遲載入。
驗證步驟
需求:查詢訂單並且關聯查詢使用者資訊,使用association實現延遲載入

0步:在SqlMapConfig.xml中開啟延遲載入
mybatis預設沒有開啟延遲載入,需要在SqlMapConfig.xml中setting配置

<settings>
        <!-- 開啟延遲載入,注意必須寫在前面 -->
            <!-- 開啟延遲載入開關 -->
            <setting name="lazyLoadingEnabled" value="true"/>
            <!-- 將積極載入改為消極載入即是按需載入 -->
            <setting name="aggressiveLazyLoading" value="false"/>

</settings>

步:建立pojo—->Orders.java(同上一對一查詢)

步:在OrdersMapperCustom.xml中新增如下配置語句

先去執行findOrdersUserLazyLoading,當需要去查詢使用者資訊的時候再去執行findUserById,通過resultMap的定義將延遲載入執行配置起來。

<resultMap type="cn.itcast.mybatis.pojo.Orders" id="OrdersUserLazyLoadingResultMap">
<!-- (1) 配置訂單資訊 -->
        <id column="id" property="id"/>
        <result column="user_id" property="userId"/>
        <result column="number" property="number"/>
        <result column="createtime" property="createtime"/>
        <result column="note" property="note"/>
<!-- (2) 實現使用者資訊延遲載入 -->  
<!-- select:指定延遲載入需要執行的statement的id(是根據user_id查詢使用者資訊的statement),
                                要使用userMapper.xml中findUserById完成根據使用者id(user_id)使用者資訊的查詢,
                                如果findUserById不在本mapper中,則需要加上所在的namespace
           <select id="findUserById" parameterType="int" resultType="cn.itcast.mybatis.pojo.User">
                SELECT*FROM USER WHERE id=#{id}
           </select>                          
     column:訂單資訊中關聯使用者資訊查詢的列,是user_id

             關聯查詢的sql理解為:子查詢
     select 
           orders.*,
          (select username from user where orders.user_id=user.id)username,
          (select sex from user where orders.user_id=user.id)sex
     from 
          orders 
 -->

       <association property="user" javaType="cn.itcast.mybatis.pojo.User"
                    select="cn.itcast.mybatis.mapper.UserMapper.findUserById" 
                    column="user_id">
       </association>
</resultMap>


<select id="findOrdersUserLazyLoading" resultMap="OrdersUserLazyLoadingResultMap">
SELECT *FROM orders
</select>
  • 關聯查詢使用者資訊
    通過上邊查詢到的訂單資訊中user_id去關聯查詢使用者資訊
    使用UserMapper.xml中的findUserById
<select id="findUserById" parameterType="int" resultType="cn.itcast.mybatis.pojo.User">
SELECT*FROM USER WHERE id=#{id}
</select>

第三步:在介面OrdersMapperCustom.java中新增

//查詢訂單關聯查詢使用者,使用者資訊是延遲載入
    public List<Orders>findOrdersUserLazyLoading()throws Exception;

第四步:測試

//實現訂單查詢使用者,使用者資訊的延遲載入
    @Test
    public void testFindOrdersUserLazyLoading() throws Exception {
        //得到會話sqlSession
        SqlSession sqlSession=sqlSessionFactory.openSession();
        //建立代理物件
        OrdersMapperCustom ordersMapperCustom=sqlSession.getMapper(OrdersMapperCustom.class);
        //查詢訂單資訊(單表)
        List<Orders>list=ordersMapperCustom.findOrdersUserLazyLoading();
        //遍歷訂單列表
        for(Orders orders:list){
            //執行Orders裡面的getUser()時才去查詢使用者資訊,這裡實現按需載入了
            User user=orders.getUser();
            System.out.println(user);
        }
    }

測試思路:
1、執行上邊mapper方法(findOrdersUserLazyLoading),內部去呼叫cn.itcast.mybatis.mapper.OrdersMapperCustom中的findOrdersUserLazyLoading只查詢orders資訊(單表)。

2、在程式中去遍歷上一步驟查詢出的List<Orders>,當我們呼叫Orders中的getUser方法時,開始進行延遲載入。

3、延遲載入,去呼叫UserMapper.xml中findUserbyId這個方法獲取使用者資訊。

相關推薦

學習Mybatis框架高階對映關聯查詢

本節主要對訂單商品資料模型進行分析。並分析以下2個點: 高階對映:(瞭解) 實現一對一查詢、一對多、多對多查詢。 延遲載入 高階對映 訂單商品資料模型 1.1 資料模型分析思路 1、每張表記錄的資料內容 2、每張表重要的欄

MyBatis學習總結三——輸入對映和輸出對映以及關聯查詢

關於MyBatis的輸入對映和輸出對映,可輸入的型別很多,輸出型別亦是如此。如圖所示: 一、輸入型別是通過引數parameterType來設定的,引數型別有基本資料型別、包裝型別pojo、Map 基礎型別(String,int,long,double...) pojo型別

Mybatis一對一關聯查詢

注:程式碼已託管在GitHub上,地址是:https://github.com/Damaer/Mybatis-Learning ,專案是mybatis-11-one2one,需要自取,需要配置maven環境以及mysql環境(sql語句在resource下的test.sql中),覺得有用

MyBatis學習總結——關聯查詢與動態SQL

一、多表關聯查詢 表與表之間有三種常見的關聯關係,分別是一對一,一對多與多對多關係,MyBatis直接提供一對一與一對多的關聯關係,可以通過間接的方式實現多對多關聯。 1.1、一對一關係 1.1.1、執行環境 假定一個員工(emp)擁有一個登入使用者(user),員工與使用者表之間是一對一關係:

SSM框架——Mybatis關聯查詢

一、一對一關聯  1.1、提出需求   根據班級id查詢班級資訊(帶老師的資訊) 1.2、建立表和資料   建立一張教師表和班級表,這裡我們假設一個老師只負責教一個班,那麼老師和班級之間的關係就是一種一對一的關係。 CREATE TABLE teacher( t_id INT PRIMARY

Spring Boot入門系列十七整合Mybatis,建立自定義mapper 實現關聯查詢

之前講了Springboot整合Mybatis,介紹瞭如何自動生成pojo實體類、mapper類和對應的mapper.xml 檔案,並實現最基本的增刪改查功能。mybatis 外掛自動生成的mapper 實現了大部分基本、通用的方法,如:insert、update、delete、select 等大概20個左右

詳解MongoDB中的關聯查詢$lookup

一.  聚合框架  聚合框架是MongoDB的高階查詢語言,它允許我們通過轉換和合並多個文件中的資料來生成新的單個文件中不存在的資訊。 聚合管道操作主要包含下面幾個部分: 命令 功能描述 $project 指定輸出文件裡

mybatis 關聯查詢時,如果使用resultType作為輸出對映時,估計會出現重複資料

mybatis 多表關聯查詢時,一般建議還是使用把需要關聯的表的pojo新增到主表對應的pojo中作為它的屬性,這樣在mapper.xml檔案中可以使用assacition(一對一查詢),或者colletion(一對多查詢)來使用resultMap作為輸出對映。 不過最近我

java程式設計師第十六課 -MySQL資料庫查詢

課程回顧:MySQL資料庫和SQL語言 資料庫的概述 1.資料庫的作用:倉庫,儲存資料。 2.關係型的資料庫,儲存實體與實體之間的關係。 3.常見的資料庫 * Oracle MySQL SQLServer DB2 MySQL資料庫的安裝和解

mysql:mysql查詢語句 和 關聯查詢 以及 子查詢

1.查詢一張表:select * from 表名; 2.查詢指定欄位:select 欄位1,欄位2,欄位3....from 表名; 3.where條件查詢:select 欄位1,欄位2,欄位3 frome 表名 where 條件表示式; 例:select *

mybatis學習關聯查詢和resultmap的常用標籤和屬性 和分頁查詢

對映方式一: resultType和resultMap都可以用但要注意欄位的名稱和pojo屬性的名稱;如果pojo屬性不夠可 採用繼承和新增屬性的方式去實現對映; resultMap:在多表查詢的時候,查詢到多條資料,需要把資料封裝到pojo中,再把pojo放到list

SQL SERVER簡單的增,刪,查,改 語句 關聯查詢 去掉關鍵列查詢

insert into tb_UserInfo values('趙六',3,13512458679); --增加語句-- update tb_UserInfo set name='劉德華'where id=3; --修改語句-- delete from tb

JPA條件組合查詢,關聯查詢,資料條數CriteriaQuery

JPA多條件組合查詢(CriteriaQuery) /**查詢Demo結果集 * @return */ public List<Demo> findDemoList(ParamVO param,Pageable pageabl

Mybatis-plus關聯查詢分頁查詢

學習plus真的覺得寫程式碼真的越來越舒服了。昨天開始接觸吧,只要學會了多表關聯查詢。plus就能隨意搭配使用了。 關於怎麼搭建的就自行了去研究了哦。這裡直接進入主題。 我用的是springboot+mybatis-plus。新專案我打算以後都是這樣了。   配置一個分頁外掛! im

Mybatis關聯查詢之三查詢

在開發中經常用到多表查詢,這裡演示三表查詢的情況。 業務邏輯:購物車訂單的邏輯 該邏輯共涉及到三張表 1. order表 就是訂單表 記錄 訂單人的資訊、訂單地址、訂單號、訂單的總

Mybatis Plus 分頁關聯查詢

接上一篇springCloud的尾。我們這裡講mybatis plus裡的多表關聯。 第一種情況,多表關聯查詢且需要分頁。分頁依然是使用mybatis plus分頁,我們需要做的是去改變Page的結果集。所以我們在service實現類裡改變結果集就可以,至於SQL就自定義就

Mybatis Plus程式碼方式實現關聯查詢

  Mapper介面如下: 例1 @Select("SELECT t_question.*,t_stude

Mybatis【15】-- Mybatis一對一關聯查詢

注:程式碼已託管在`GitHub`上,地址是:`https://github.com/Damaer/Mybatis-Learning` ,專案是`mybatis-11-one2one`,需要自取,需要配置`maven`環境以及`mysql`環境(`sql`語句在`resource`下的`test.sql`中)

Mybatis學習————— 高階對映,一對一,一對對映

一、單向和雙向     包括一對一,一對多,多對多這三種情況,但是每一種又分為單向和雙向,在hibernate中我們就詳細解析過這單向和雙向是啥意思,在這裡,在重複一遍,就拿一對多這種關係來講,比如有員工和部門,一個部門中有多個員工,從部門方看,是一對多關係,而多名員工屬於一個部門,是多對一關係,那麼如果我

MyBatis 學習 一對一對映 一對對映

案例使用兩張表 一張user使用者表 對映關係分析 首先,站在訂單的角度考慮: 一張訂單對應一個使用者,這是一對一 然後,站在使用者的角度考慮: 一個使用者可以有多個訂單,這是一對多 那麼SQL語句該如何寫? 還記得外