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

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

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

架構(gòu)

在這里插入圖片描述

這里從學(xué)生的角度來(lái)說(shuō)就是多對(duì)一的場(chǎng)景

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

環(huán)境搭建

數(shù)據(jù)庫(kù)

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);

在這里插入圖片描述

實(shí)體類

Student

package pojo;

import lombok.Data;
@Data
public class Student {
    private int id;
    private String name;
    private Teacher teacher;//這里因?yàn)槲覀冇幸粋€(gè)對(duì)應(yīng)的關(guān)系,學(xué)生要對(duì)應(yīng)到一個(gè)老師,所以要使用Teacher類型
}

Teacher

package pojo;

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

接口

(因?yàn)檫@里是多對(duì)一,所以我就沒有用到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>

這里說(shuō)明一下

  • association 是相對(duì)于對(duì)象的
  • collection是相對(duì)于集合的

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

子查詢方法

<?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>

也就是這種方法,它其實(shí)是相當(dāng)于我們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é)果查詢出來(lái)然后對(duì)結(jié)果集做一下處理
這里特別說(shuō)明一下column這個(gè)屬性,這個(gè)可不是數(shù)據(jù)庫(kù)中你需要的字段名,而是你查詢出來(lái)的那張表的字段名,這里起了別名之后就不再是原來(lái)teacher數(shù)據(jù)庫(kù)表中的字段名了

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

相關(guān)文章

  • SpringBoot日志配置全過(guò)程

    SpringBoot日志配置全過(guò)程

    Spring Boot默認(rèn)使用Logback作為日志框架,可以配置多種日志系統(tǒng),包括JavaUtilLogging、CommonsLogging、Log4J及SLF4J,默認(rèn)日志輸出在控制臺(tái),可以通過(guò)配置文件將日志保存到文件中,日志級(jí)別包括TRACE、DEBUG、INFO、WARN、ERROR和FATAL
    2025-01-01
  • Spring Boot 使用 logback、logstash、ELK 記錄日志文件的方法

    Spring Boot 使用 logback、logstash、ELK 記錄日志文件的方法

    這篇文章主要介紹了Spring Boot 使用 logback、logstash、ELK 記錄日志文件的思路詳解,文中給大家提到了logback 取代 log4j的理由,需要的朋友可以參考下
    2017-12-12
  • 一文教會(huì)Java新手使用Spring?MVC中的查詢字符串和查詢參數(shù)

    一文教會(huì)Java新手使用Spring?MVC中的查詢字符串和查詢參數(shù)

    在使用springMVC框架構(gòu)建web應(yīng)用,客戶端常會(huì)請(qǐng)求字符串、整型、json等格式的數(shù)據(jù),這篇文章主要給大家介紹了關(guān)于通過(guò)一文教會(huì)Java新手使用Spring?MVC中的查詢字符串和查詢參數(shù)的相關(guān)資料,需要的朋友可以參考下
    2024-01-01
  • Spring?Retry實(shí)現(xiàn)重試機(jī)制的示例詳解

    Spring?Retry實(shí)現(xiàn)重試機(jī)制的示例詳解

    這篇文章主要為大家詳細(xì)介紹了Spring-Retry的用法以及實(shí)現(xiàn)原理是怎么樣的,文中的示例代碼講解詳細(xì),具有一定的參考價(jià)值,需要的可以了解一下
    2023-07-07
  • Mybatis超詳細(xì)講解構(gòu)建SQL方法

    Mybatis超詳細(xì)講解構(gòu)建SQL方法

    這篇文章主要為大家詳細(xì)介紹了Mybatis構(gòu)建SQL,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-07-07
  • Spring AI Alibaba接入大模型時(shí)的依賴問(wèn)題小結(jié)

    Spring AI Alibaba接入大模型時(shí)的依賴問(wèn)題小結(jié)

    文章介紹了如何在pom.xml文件中配置SpringAI Alibaba依賴,并提供了一個(gè)示例pom.xml文件,同時(shí),建議將Maven倉(cāng)庫(kù)鏡像設(shè)置為阿里云以提高下載速度,具體配置方法跟隨小編一起學(xué)習(xí)下吧
    2025-02-02
  • java實(shí)現(xiàn)Rabbitmq延遲隊(duì)列和惰性隊(duì)列

    java實(shí)現(xiàn)Rabbitmq延遲隊(duì)列和惰性隊(duì)列

    本文主要介紹了java實(shí)現(xiàn)Rabbitmq延遲隊(duì)列和惰性隊(duì)列,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-12-12
  • idea中如何配置tomcat

    idea中如何配置tomcat

    這篇文章主要介紹了idea中如何配置tomcat問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • SpringBoot中@Autowired注入service時(shí)出現(xiàn)循環(huán)依賴問(wèn)題的解決方法

    SpringBoot中@Autowired注入service時(shí)出現(xiàn)循環(huán)依賴問(wèn)題的解決方法

    在Spring Boot開發(fā)過(guò)程中,@Autowired注入Service時(shí)出現(xiàn)循環(huán)依賴是一個(gè)常見問(wèn)題,循環(huán)依賴指的是兩個(gè)或多個(gè)Bean相互依賴,形成閉環(huán),導(dǎo)致Spring容器無(wú)法正常初始化這些Bean,這里提供幾種解決Spring Boot中@Autowired注入Service時(shí)循環(huán)依賴問(wèn)題的方法
    2024-02-02
  • Spring Framework遠(yuǎn)程代碼執(zhí)行漏洞分析(最新漏洞)

    Spring Framework遠(yuǎn)程代碼執(zhí)行漏洞分析(最新漏洞)

    Spring Framework 是一個(gè)開源應(yīng)用框架,旨在降低應(yīng)用程序開發(fā)的復(fù)雜度,它具有分層體系結(jié)構(gòu),允許用戶選擇組件,同時(shí)還為 J2EE 應(yīng)用程序開發(fā)提供了一個(gè)有凝聚力的框架,對(duì)Spring遠(yuǎn)程代碼執(zhí)行漏洞相關(guān)知識(shí)感興趣的朋友一起看看吧
    2022-04-04

最新評(píng)論

怀集县| 自治县| 聊城市| 莱西市| 府谷县| 中超| 本溪市| 禹城市| 新建县| 微山县| 临颍县| 临海市| 宁陵县| 汾阳市| 三原县| 巫溪县| 宾阳县| 临颍县| 延边| 昌都县| 增城市| 济宁市| 锡林浩特市| 亚东县| 山东省| 兴和县| 喜德县| 尼木县| 栖霞市| 满城县| 潼南县| 泰州市| 新闻| 三台县| 车致| 昭通市| 资溪县| 城步| 灌南县| 子洲县| 襄汾县|