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

mybatis注解開發(fā) 一對(duì)多嵌套查詢方式

 更新時(shí)間:2023年03月15日 11:00:12   作者:眠不覺2020  
這篇文章主要介紹了mybatis注解開發(fā) 一對(duì)多嵌套查詢方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。

mybatis一對(duì)多嵌套查詢

一個(gè)class中有許多student,屬于一對(duì)多關(guān)系。

本文利用mybatis注解,嵌套查詢方式來實(shí)現(xiàn)一對(duì)多查詢,在根據(jù)classId查詢class時(shí),順便查詢并展示出class中的student

student實(shí)體類

package com.itheima.dao;

public class StudentDao {
    private Integer id;
    private String name;
    private Integer age;
    private Integer cid;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public Integer getCid() {
        return cid;
    }

    public void setCid(Integer cid) {
        this.cid = cid;
    }

    @Override
    public String toString() {
        return "StudentDao{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                ", cid=" + cid +
                '}';
    }
}

class實(shí)體類

package com.itheima.dao;

import java.util.List;

public class ClassDao {
    private Integer id;
    private String className;
    private List<StudentDao> studentsList;
    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getClassName() {
        return className;
    }

    public void setClassName(String className) {
        this.className = className;
    }

    @Override
    public String toString() {
        return "ClassDao{" +
                "id=" + id +
                ", className='" + className + '\'' +
                ", studentsList=" + studentsList +
                '}';
    }
}

mybatis-config.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <!--設(shè)置連接數(shù)據(jù)庫的環(huán)境-->
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url"
                          value="jdbc:mysql://localhost:3306/mybatis"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>
    <!--引入映射文件-->
    <mappers>
        <mapper class="com.itheima.mapper.StudentMapper"/>
        <mapper class="com.itheima.mapper.ClassMapper"/>
    </mappers>

</configuration>

studentMapper.java

package com.itheima.mapper;

import com.itheima.dao.StudentDao;
import org.apache.ibatis.annotations.Many;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;

import java.util.List;

public interface StudentMapper {
    @Select("select * from student where cid = #{cid}")
    @Results({@Result(id = true, property = "id", column = "id"),
              @Result(property = "name",column = "name"),
              @Result(property = "age",column = "age"),
              @Result(property = "cid", column = "cid")})
    List<StudentDao> selectStudentByCid(Integer cid);
}

classMapper.java

package com.itheima.mapper;

import com.itheima.dao.ClassDao;
import org.apache.ibatis.annotations.Many;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;

import java.util.List;

public interface ClassMapper {
    @Select("select * from class where id = #{id}")
    @Results({@Result(id =true, property = "id",column = "id"),
              @Result(property = "className",column = "className"),
              @Result(property ="studentsList",column = "id",
                      many = @Many(select = "com.itheima.mapper.StudentMapper.selectStudentByCid"))})
    ClassDao selectClassById(Integer id);
}

testMybatis.java

import com.itheima.dao.ClassDao;
import com.itheima.dao.StudentDao;
import com.itheima.mapper.ClassMapper;
import com.itheima.mapper.StudentMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

public class testMybatis {
   @Test
    public void test() throws IOException {
       InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
       SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
       SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is);
       SqlSession sqlSession = sqlSessionFactory.openSession(true);
       ClassMapper classMapper = sqlSession.getMapper(ClassMapper.class);
       ClassDao res = classMapper.selectClassById(2);
       System.out.println(res.toString());
   }
}

數(shù)據(jù)庫sql文件

INSERT INTO `class` (`id`, `className`) VALUES (1, '軟件19-1');
INSERT INTO `class` (`id`, `className`) VALUES (2, '軟件19-2');
INSERT INTO `student` (`name`, `age`, `cid`, `id`) VALUES ('羅輯', 18, 2, 1);
INSERT INTO `student` (`name`, `age`, `cid`, `id`) VALUES ('張三', 18, 2, 2);
INSERT INTO `student` (`name`, `age`, `cid`, `id`) VALUES ('李四', 18, 2, 3);

查詢結(jié)果可看出,2班的班級(jí)信息和2班的學(xué)生信息

注意事項(xiàng):

1、一對(duì)多關(guān)系中,‘’多‘’方實(shí)體類存‘’一‘’的那方的主鍵作為外鍵,‘’一‘’的那方的實(shí)體類存‘’多‘’的那方的 list<多的那方的實(shí)體類屬性>以便查詢時(shí)展示出來。

在“一”的那方的mapper接口中定義嵌套查詢。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • SpringBoot基于redis自定義注解實(shí)現(xiàn)后端接口防重復(fù)提交校驗(yàn)

    SpringBoot基于redis自定義注解實(shí)現(xiàn)后端接口防重復(fù)提交校驗(yàn)

    本文主要介紹了SpringBoot基于redis自定義注解實(shí)現(xiàn)后端接口防重復(fù)提交校驗(yàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • Java面試題沖刺第十九天--數(shù)據(jù)庫(4)

    Java面試題沖刺第十九天--數(shù)據(jù)庫(4)

    這篇文章主要為大家分享了最有價(jià)值的三道關(guān)于數(shù)據(jù)庫的面試題,涵蓋內(nèi)容全面,包括數(shù)據(jù)結(jié)構(gòu)和算法相關(guān)的題目、經(jīng)典面試編程題等,感興趣的小伙伴們可以參考一下
    2021-08-08
  • Java深入淺出數(shù)組的定義與使用上篇

    Java深入淺出數(shù)組的定義與使用上篇

    數(shù)組是有序的元素序列,若將有限個(gè)類型相同的變量的集合命名,那么這個(gè)名稱為數(shù)組名。組成數(shù)組的各個(gè)變量稱為數(shù)組的分量,也稱為數(shù)組的元素,有時(shí)也稱為下標(biāo)變量。數(shù)組是在程序設(shè)計(jì)中,為了處理方便, 把具有相同類型的若干元素按有序的形式組織起來的一種形式
    2022-03-03
  • 劍指Offer之Java算法習(xí)題精講二叉樹與N叉樹

    劍指Offer之Java算法習(xí)題精講二叉樹與N叉樹

    跟著思路走,之后從簡(jiǎn)單題入手,反復(fù)去看,做過之后可能會(huì)忘記,之后再做一次,記不住就反復(fù)做,反復(fù)尋求思路和規(guī)律,慢慢積累就會(huì)發(fā)現(xiàn)質(zhì)的變化
    2022-03-03
  • 實(shí)現(xiàn)java簡(jiǎn)單的線程池

    實(shí)現(xiàn)java簡(jiǎn)單的線程池

    這篇文章主要為大家詳細(xì)介紹了java簡(jiǎn)單實(shí)現(xiàn)多線程,及java爬蟲使用線程池實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • java并發(fā)高的情況下用ThreadLocalRandom來生成隨機(jī)數(shù)

    java并發(fā)高的情況下用ThreadLocalRandom來生成隨機(jī)數(shù)

    如果我們想要生成一個(gè)隨機(jī)數(shù),通常會(huì)使用Random類。但是在并發(fā)情況下Random生成隨機(jī)數(shù)的性能并不是很理想,本文主要介紹了java并發(fā)高的情況下用ThreadLocalRandom來生成隨機(jī)數(shù),感興趣的可以了解一下
    2022-05-05
  • 在Java下利用log4j記錄日志的方法

    在Java下利用log4j記錄日志的方法

    本文先對(duì)log4j進(jìn)行了簡(jiǎn)短的介紹,而后通過安裝、配置和普通項(xiàng)目和web項(xiàng)目幾個(gè)方面來詳細(xì)介紹了在Java下利用log4j記錄日志的方法,有需要的朋友們可以參考借鑒。
    2016-09-09
  • 分布式之全面了解Kafka的使用與特性

    分布式之全面了解Kafka的使用與特性

    Kafka?是我工作多年使用最多的消息中間件?,特點(diǎn)是擁有巨大吞吐量(數(shù)百萬/秒),作為當(dāng)下最流行的分布式,可水平擴(kuò)展,可容錯(cuò)的“消息系統(tǒng)”,下面跟隨小編看下分布式之全面了解Kafka的使用與特性
    2021-11-11
  • Mybatis之a(chǎn)ssociation和collection用法

    Mybatis之a(chǎn)ssociation和collection用法

    這篇文章主要介紹了Mybatis之a(chǎn)ssociation和collection用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • Java冒泡排序的定義與實(shí)例代碼

    Java冒泡排序的定義與實(shí)例代碼

    這篇文章主要給大家介紹了關(guān)于Java冒泡排序的定義與實(shí)例的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12

最新評(píng)論

新沂市| 青阳县| 昭觉县| 林西县| 来凤县| 宜昌市| 康马县| 锦屏县| 宝鸡市| 开江县| 丹江口市| 左权县| 合水县| 乡宁县| 冀州市| 瑞丽市| 昌黎县| 南漳县| 白沙| 湖州市| 屏边| 邵武市| 易门县| 赫章县| 应用必备| 靖边县| 和田市| 高平市| 晋中市| 丰都县| 绥宁县| 宜丰县| 望江县| 竹北市| 迁安市| 沂南县| 无为县| 陇南市| 鄂伦春自治旗| 鹿泉市| 甘洛县|