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

在MyBatis中實(shí)現(xiàn)一對多查詢和多對一查詢的方式詳解(各兩種方式)

 更新時間:2022年01月26日 11:35:27   作者:小羅要有出息  
今天通過兩種方法分別給大家介紹在MyBatis中實(shí)現(xiàn)一對多查詢和多對一查詢的方式,每種方式通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧

1、多對一

1、1環(huán)境搭建

數(shù)據(jù)庫

CREATE TABLE teacher (
id INT(10) NOT NULL,
NAME VARCHAR(64) DEFAULT NULL,

PRIMARY KEY (id),
)ENGINE=INNODB DEFAULT CHARSET=utf8;
INSERT INTO teacher (id ,NAME) VALUES (1,'羅老師');

CREATE TABLE student (
id INT(10) NOT NULL,
NAME VARCHAR(64) DEFAULT NULL,
tid INT(10) DEFAULT NULL,
PRIMARY KEY (id),
KEY fktid (tid),
CONSTRAINT fktid FOREIGN KEY (tid) REFERENCES teacher (id)
)
ALTER TABLE student ENGINE=INNODB DEFAULT CHARSET=utf8;

INSERT INTO student (id ,NAME ,tid) VALUES (1,'小明',1);
INSERT INTO student (id ,NAME ,tid) VALUES (2,'小紅',1);
INSERT INTO student (id ,NAME ,tid) VALUES (3,'小張',1);
INSERT INTO student (id ,NAME ,tid) VALUES (5,'小羅',1);

MyBatis.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>
    <settings>
        <setting name="logImpl" value="STDOUT_LOGGING"/><!--日記log4j-->
    </settings>
    <typeAliases>
        <package name="com.Google.pojo"/><!--給實(shí)體類取別名-->
    </typeAliases>
    <!--<typeAliases>
        <typeAlias type="com.Google.pojo.User" alias="user"/>
    </typeAliases>-->
    <environments default="development"><!--可以創(chuàng)建多個環(huán)境-->
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/><!--加載驅(qū)動-->
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF-8"/><!--連接數(shù)據(jù)庫-->
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>
    <!--注冊接口-->
    <mappers>
        <mapper resource="com/Google/Dao/StudentMapper.xml"/>
        <mapper resource="com/Google/Dao/TeacherMapper.xml"/>
    </mappers>
</configuration>

1、2編寫實(shí)體類、

學(xué)生·

@Data
public class Student {
    private int id;
    private String name;
    private Teacher teacher;
}

老師·

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

1、3編寫接口方法

public interface  StudentMapper {
    List<Student> getStudentList();
    List<Student> getStudentList1();
}

1、4編寫Mapper

<?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="com.Google.Dao.StudentMapper">
    <!--按照查詢嵌套處理-->
    <select id="getStudentList" resultMap="StudentMap">
        select * from student
    </select>
    <resultMap id="StudentMap" type="Student" >
        <result property="id" column="id"/>
        <result property="name" column="name"/>
        <association property="teacher" column="tid" javaType="Teacher" select="getTeacher"/>
    </resultMap>
    <select id="getTeacher" resultType="Teacher">
        select * from teacher
    </select>
    <!--按照結(jié)果嵌套處理-->
    <select id="getStudentList1" resultMap="StudentMap1">
        select s.id sid,s.name sname,t.name tname
        from Student s,Teacher t
        where s.tid=t.id
    </select>
    <resultMap id="StudentMap1" type="Student">
        <result property="id" column="sid"/>
        <result property="name" column="sname"/>
        <association property="teacher" javaType="Teacher" >
            <result property="name" column="tname"/>
        </association>
    </resultMap>
</mapper>

1、5實(shí)現(xiàn)

package com.Google.Dao;

import com.Google.pojo.Student;
import com.Google.units.sqlSessionFactory;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

import java.util.List;

public class StudentMapperText {
    @Test
    public void getStudent(){
        SqlSession sqlSession = sqlSessionFactory.getsqlSession();
        StudentMapper mapper = sqlSession.getMapper(StudentMapper.class);
        List<Student> studentList = mapper.getStudentList();
        for (Student student : studentList) {
            System.out.println(student);
        }
        sqlSession.close();
    }
    @Test
    public void getStudent1(){
        SqlSession sqlSession = sqlSessionFactory.getsqlSession();
        StudentMapper mapper = sqlSession.getMapper(StudentMapper.class);
        List<Student> studentList = mapper.getStudentList1();
        for (Student student : studentList) {
            System.out.println(student);
        }
        sqlSession.close();
    }
}

1、6運(yùn)行結(jié)果

Student(id=1, name=小明, teacher=Teacher(id=0, name=羅老師))
Student(id=2, name=小紅, teacher=Teacher(id=0, name=羅老師))
Student(id=3, name=小張, teacher=Teacher(id=0, name=羅老師))
Student(id=4, name=小王, teacher=Teacher(id=0, name=羅老師))
Student(id=5, name=小羅, teacher=Teacher(id=0, name=羅老師))

2、一對多

2、1環(huán)境搭建和一對多一樣

2、2編寫實(shí)體類

@Data
public class Student {
    private int id;
    private String name;
    private int tid;
}
@Data
public class Teacher {
    private int id;
    private String name;
    //一個老師擁有多個學(xué)生,給老師創(chuàng)建一個學(xué)生集合
    private List<Student> student;
}

2、3編寫接口的方法

public interface TeacherMapper {
    Teacher getTeacher(@Param("tid") int id);

    Teacher getTeacher1(@Param("tid") int id);
}

2、4編寫Mapper配置

<?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="com.Google.Dao.TeacherMapper">

    <!--按結(jié)果嵌套查詢-->
    <select id="getTeacher" resultMap="TeacherStudent">
        select s.id sid, s.name sname, t.id tid, t.name tname
        from student s,
             teacher t
        where s.tid = t.id
          and t.id = #{tid}
    </select>
    <resultMap id="TeacherStudent" type="Teacher">
        <result property="id" column="tid"/>
        <result property="name" column="tname"/>
        <!--ofType="" 用于獲取集合中泛型的信息-->
        <collection property="student" ofType="Student">
            <result property="id" column="sid"/>
            <result property="name" column="sname"/>
            <result property="tid" column="tid"/>
        </collection>
    </resultMap>
    <!--嵌套表查詢(子查詢)-->
    <select id="getTeacher1" resultMap="TeacherStudent1">
        select * from teacher where id=#{tid}
    </select>
    <resultMap id="TeacherStudent1" type="Teacher">
        <result property="id" column="id"/>
        <collection property="student" javaType="ArrayList" ofType="Student" select="getStudetByID" column="id"/>
    </resultMap>
    <select id="getStudetByID" resultType="Student">
        select * from student where tid=#{tid}
    </select>
</mapper>

2、5實(shí)現(xiàn)

public class TeacherMapperText {
    @Test
    public void getTeacher(){
        SqlSession sqlSession = sqlSessionFactory.getsqlSession();
        TeacherMapper mapper = sqlSession.getMapper(TeacherMapper.class);
        Teacher teacher = mapper.getTeacher(1);
        System.out.println(teacher);
        sqlSession.close();
    }
    @Test
    public void getTeacher1(){
        SqlSession sqlSession = sqlSessionFactory.getsqlSession();
        TeacherMapper mapper = sqlSession.getMapper(TeacherMapper.class);
        Teacher teacher1 = mapper.getTeacher1(1);
        System.out.println(teacher1);
        sqlSession.close();
    }
}

2、6運(yùn)行結(jié)果

Teacher(id=1, name=羅老師, student=[Student(id=1, name=小明, tid=1), Student(id=2, name=小紅, tid=1), Student(id=3, name=小張, tid=1), Student(id=4, name=小王, tid=1), Student(id=5, name=小羅, tid=1)])

到此這篇關(guān)于在MyBatis中實(shí)現(xiàn)一對多查詢,和多對一查詢(各兩種方式)的文章就介紹到這了,更多相關(guān)MyBatis一對多查詢和多對一查詢內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • mybatis配置獲取自增主鍵的操作方法

    mybatis配置獲取自增主鍵的操作方法

    當(dāng)需要剛剛插入數(shù)據(jù)庫的數(shù)據(jù)對應(yīng)的新增主鍵時,通過配置xml文件,使數(shù)據(jù)庫返回新增主鍵id,并把主鍵id與類參數(shù)對應(yīng),本文給大家介紹了mybatis配置獲取自增主鍵的操作方法,需要的朋友可以參考下
    2024-05-05
  • JAVA拋出異常的三種形式詳解

    JAVA拋出異常的三種形式詳解

    這篇文章主要介紹了JAVA拋出異常的三種形式詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-07-07
  • Java通過接口實(shí)現(xiàn)匿名類的實(shí)例代碼

    Java通過接口實(shí)現(xiàn)匿名類的實(shí)例代碼

    這篇文章介紹了Java通過接口實(shí)現(xiàn)匿名類的實(shí)例代碼,有需要的朋友可以參考一下
    2013-10-10
  • Java復(fù)制(拷貝)數(shù)組的五種方法匯總

    Java復(fù)制(拷貝)數(shù)組的五種方法匯總

    java基礎(chǔ)在Java中我們經(jīng)常需要復(fù)制一個數(shù)組,下面這篇文章主要給大家介紹了關(guān)于Java復(fù)制(拷貝)數(shù)組的五種方法,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-03-03
  • Springboot+SpringSecurity實(shí)現(xiàn)圖片驗(yàn)證碼登錄的示例

    Springboot+SpringSecurity實(shí)現(xiàn)圖片驗(yàn)證碼登錄的示例

    本文主要介紹了Springboot+SpringSecurity實(shí)現(xiàn)圖片驗(yàn)證碼登錄的示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • 如何解決Nacos服務(wù)下線報錯問題

    如何解決Nacos服務(wù)下線報錯問題

    這篇文章主要介紹了如何解決Nacos服務(wù)下線報錯問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • java實(shí)現(xiàn)字符串匹配求兩個字符串的最大公共子串

    java實(shí)現(xiàn)字符串匹配求兩個字符串的最大公共子串

    這篇文章主要介紹了java實(shí)現(xiàn)求兩個字符串最大公共子串的方法,詳細(xì)的描述了兩個字符串的最大公共子串算法的實(shí)現(xiàn),需要的朋友可以參考下
    2016-10-10
  • ssm項(xiàng)目session使用及其作用域問題

    ssm項(xiàng)目session使用及其作用域問題

    這篇文章主要介紹了ssm項(xiàng)目session使用及其作用域問題,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03
  • java如何根據(jù)用戶請求獲取ip地址并解析省市信息

    java如何根據(jù)用戶請求獲取ip地址并解析省市信息

    根據(jù)當(dāng)前用戶本地IP地址,查詢IP地址庫,獲取IP所在的省市信息,目前有多種方式實(shí)現(xiàn)該功能,這篇文章主要給大家介紹了關(guān)于java如何根據(jù)用戶請求獲取ip地址并解析省市信息的相關(guān)資料,需要的朋友可以參考下
    2023-12-12
  • SpringBoot中的ApplicationListener事件監(jiān)聽器使用詳解

    SpringBoot中的ApplicationListener事件監(jiān)聽器使用詳解

    這篇文章主要介紹了SpringBoot中的ApplicationListener事件監(jiān)聽器使用詳解,ApplicationListener是應(yīng)用程序的事件監(jiān)聽器,繼承自java.util.EventListener標(biāo)準(zhǔn)接口,采用觀察者設(shè)計(jì)模式,需要的朋友可以參考下
    2023-11-11

最新評論

邯郸县| 三亚市| 出国| 光泽县| 洞头县| 临沂市| 汤原县| 沈阳市| 庄浪县| 乌审旗| 景德镇市| 东阳市| 兴仁县| 榆社县| 公主岭市| 锡林浩特市| 山西省| 无为县| 保德县| 永春县| 昌江| 交城县| 苍南县| 二连浩特市| 无棣县| 离岛区| 恩平市| 贡山| 南澳县| 连城县| 肃北| 休宁县| 赤水市| 湘阴县| 丘北县| 冀州市| 炉霍县| 江华| 泰和县| 左权县| 冀州市|