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

Mybatis 多對一查詢的實現(xiàn)方法

 更新時間:2022年02月23日 10:40:39   作者:小小代碼熊  
這篇文章主要介紹了Mybatis 多對一查詢,本文通過場景分析示例代碼相結(jié)合給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

架構(gòu)

在這里插入圖片描述

這里從學生的角度來說就是多對一的場景

那么在Java中是怎么樣的呢?

環(huán)境搭建

數(shù)據(jù)庫

CREATE TABLE `student`(
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`name` VARCHAR(20) DEFAULT NULL 
)ENGINE=INNODB DEFAULT CHARSET=utf8;

INSERT INTO student VALUES (1,"李老師");
CREATE TABLE `student` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`name` VARCHAR(20) DEFAULT NULL ,
`tid` INT(4) NOT NULL,
KEY `fk_tid` (`tid`),
CONSTRAINT fk_tid FOREIGN KEY(`tid`) REFERENCES `teacher`(`id`)
INSERT INTO student VALUES
(1,"小紅",1),
(2,"小綠",1),
(3,"小燈",1),
(4,"小勿",1),
(5,"小闖",1);

在這里插入圖片描述

實體類

Student

package pojo;

import lombok.Data;
@Data
public class Student {
    private int id;
    private String name;
    private Teacher teacher;//這里因為我們有一個對應的關系,學生要對應到一個老師,所以要使用Teacher類型
}

Teacher

package pojo;

import lombok.Data;
@Data
public class Teacher {
    private int id;
    private String name;
}

接口

(因為這里是多對一,所以我就沒有用到TeacherMapper)
StudentMapper

package dao;

import pojo.Student;
import java.util.List;
public interface StudentMapper {
    List<Student> getStudents();
    List<Student> getStudents2();
}

TeacherMapper

package dao;
public interface TeacherMapper {
}

Mapper配置文件

TeacherMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="dao.TeacherMapper">
</mapper>

StudentMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="dao.StudentMapper">
<!--  第二種  -->
    <select id="getStudents2" resultMap="StudentTeacher2">
        select s.id sid,s.name sname,t.id tid,t.name tname from student s,teacher t where s.tid=t.id;
    </select>
    <resultMap id="StudentTeacher2" type="Student" >
        <result column="sid" property="id" />
        <result column="sname" property="name" />
        <association property="teacher" javaType="Teacher">
            <result property="id" column="tid" />
            <result property="name" column="tname" />
        </association>
    </resultMap>
<!--  第一種  -->
    <select id="getStudents" resultMap="StudentTeacher">
        select * from student;
    </select>
    <resultMap id="StudentTeacher" type="Student" >
        <result column="id" property="id" />
        <result column="name" property="name" />
        <association property="teacher" column="tid" javaType="Teacher" select="getTeachers" />
    </resultMap>
    <select id="getTeachers" resultType="Teacher">
        select * from teacher where id=#{id};
    </select>
</mapper>

這里說明一下

  • association 是相對于對象的
  • collection是相對于集合的

然后這里有兩種方法,我們一種一種看

子查詢方法

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="dao.StudentMapper">
<!--  第一種  -->
    <select id="getStudents" resultMap="StudentTeacher">
        select * from student;
    </select>
    <resultMap id="StudentTeacher" type="Student" >
        <result column="id" property="id" />
        <result column="name" property="name" />
        <association property="teacher" column="tid" javaType="Teacher" select="getTeachers" />
    </resultMap>

    <select id="getTeachers" resultType="Teacher">
        select * from teacher where id=#{id};
</mapper>

也就是這種方法,它其實是相當于我們Sql里面的子查詢,也就是一層查詢里面嵌套一層查詢

按結(jié)果集查詢

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="dao.StudentMapper">
<!--  第二種  -->
<select id="getStudents2" resultMap="StudentTeacher2">
        select s.id sid,s.name sname,t.id tid,t.name tname from student s,teacher t where s.tid=t.id;
    </select>
    <resultMap id="StudentTeacher2" type="Student" >
        <result column="sid" property="id" />
        <result column="sname" property="name" />
        <association property="teacher" javaType="Teacher">
            <result property="id" column="tid" />
            <result property="name" column="tname" />
        </association>
    </resultMap>
</mapper>

這種方法就是我們一次性把結(jié)果查詢出來然后對結(jié)果集做一下處理
這里特別說明一下column這個屬性,這個可不是數(shù)據(jù)庫中你需要的字段名,而是你查詢出來的那張表的字段名,這里起了別名之后就不再是原來teacher數(shù)據(jù)庫表中的字段名了

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

相關文章

  • spring?boot?2.x靜態(tài)資源會被攔截器攔截的原因分析及解決

    spring?boot?2.x靜態(tài)資源會被攔截器攔截的原因分析及解決

    這篇文章主要介紹了spring?boot?2.x靜態(tài)資源會被攔截器攔截的原因分析及解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • java實現(xiàn)計算周期性提醒的示例

    java實現(xiàn)計算周期性提醒的示例

    本文分享一個java實現(xiàn)計算周期性提醒的示例,可以計算父親節(jié)、母親節(jié)這樣的節(jié)日,也可以定義如每月最好一個周五,以方便安排會議
    2014-04-04
  • SpringCloud Nacos集群搭建過程詳解

    SpringCloud Nacos集群搭建過程詳解

    Nacos集群不僅僅是服務注冊中心,還在微服務架構(gòu)中發(fā)揮著關鍵的角色,支持多種場景下的服務治理和協(xié)調(diào),本文介紹了如何在SpringCloud環(huán)境中搭建Nacos集群,為讀者提供了一份清晰而詳盡的指南,通過逐步演示每個關鍵步驟,讀者能夠輕松理解并操作整個搭建過程
    2024-02-02
  • Java自定義比較器實現(xiàn)中文排序

    Java自定義比較器實現(xiàn)中文排序

    這篇文章主要介紹了Java自定義比較器實現(xiàn)中文排序,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • springboot連接kafka集群的使用示例

    springboot連接kafka集群的使用示例

    在項目中使用kafka的場景有很多,尤其是實時產(chǎn)生的數(shù)據(jù)流,本文主要介紹了springboot連接kafka集群的使用示例,具有一定的參考價值,感興趣的可以了解一下
    2023-09-09
  • 淺談JAVA實現(xiàn)選擇排序,插入排序,冒泡排序,以及兩個有序數(shù)組的合并

    淺談JAVA實現(xiàn)選擇排序,插入排序,冒泡排序,以及兩個有序數(shù)組的合并

    這篇文章主要介紹了JAVA實現(xiàn)選擇排序,插入排序,冒泡排序,以及兩個有序數(shù)組的合并,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-03-03
  • SpringBoot攔截器如何獲取http請求參數(shù)

    SpringBoot攔截器如何獲取http請求參數(shù)

    這篇文章主要給大家介紹了SpringBoot攔截器如何獲取http請求參數(shù)的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-09-09
  • Java實現(xiàn)的漢語拼音工具類完整實例

    Java實現(xiàn)的漢語拼音工具類完整實例

    這篇文章主要介紹了Java實現(xiàn)的漢語拼音工具類,結(jié)合完整實例形式分析了java基于pinyin4j包實現(xiàn)編碼轉(zhuǎn)換的相關操作技巧,需要的朋友可以參考下
    2017-11-11
  • Java排序算法總結(jié)之冒泡排序

    Java排序算法總結(jié)之冒泡排序

    這篇文章主要介紹了Java排序算法總結(jié)之冒泡排序,較為詳細的分析了冒泡排序的原理與java實現(xiàn)技巧,需要的朋友可以參考下
    2015-05-05
  • Java實現(xiàn)局域網(wǎng)聊天小程序

    Java實現(xiàn)局域網(wǎng)聊天小程序

    這篇文章主要為大家詳細介紹了Java實現(xiàn)局域網(wǎng)聊天小程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05

最新評論