0
点赞
收藏
分享

微信扫一扫

Mybatis框架-----Mybatis 关联查询

瑾谋 2022-03-31 阅读 37

Mybatis框架-----Mybatis 关联查询

文章目录

✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨

mybatis核心文件

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

<!--    引入文件-->
    <properties resource="db.properties"/>

    <!--    //开发环境为开发环境-->
    <environments default="development">
        <environment id="development">
<!--            事务节点  JDBC是以jdbc的提交和回滚-->
            <transactionManager type="JDBC"></transactionManager>
<!--            配制数据源-->
            <dataSource type="POOLED">
<!--                数据库池连接-->
                <property name="driver" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>
    </environments>

<!--    //引入映射文件-->
    <mappers>
<!--        //相对路径-->
        <mapper resource="mapper/StudentMapper.xml"/>
        <mapper resource="mapper/TeacherMapper.xml"/>
        <mapper resource="mapper/ClassMapper.xml"/>
    </mappers>


</configuration>

jar包

 <dependencies>
<!--        mybatis的资源包 数据库驱动包-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.9</version>
        </dependency>

        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.12</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.49</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/junit/junit -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.2</version>
            <scope>test</scope>
        </dependency>




    </dependencies>

pojo

package mybatis.bean;

import java.util.List;

public class Class {

    private int cid ;   //班级编号
    private String cname ; //班级名称
    private List<Student> studentList; //学生列表
    private List<Teacher> teacherList ;

    public int getCid() {
        return cid;
    }

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

    public String getCname() {
        return cname;
    }

    public void setCname(String cname) {
        this.cname = cname;
    }

    public List<Student> getStudentList() {
        return studentList;
    }

    public void setStudentList(List<Student> studentList) {
        this.studentList = studentList;
    }

    public List<Teacher> getTeacherList() {
        return teacherList;
    }

    public void setTeacherList(List<Teacher> teacherList) {
        this.teacherList = teacherList;
    }

    @Override
    public String toString() {
        final StringBuilder sb = new StringBuilder("Class{");
        sb.append("cid=").append(cid);
        sb.append(", cname='").append(cname).append('\'');
        sb.append(", studentList=").append(studentList);
        sb.append(", teacherList=").append(teacherList);
        sb.append('}');
        return sb.toString();
    }
}

package mybatis.bean;

public class Student {
    private int studentId ;
    private String studentName ;
    private String studentSex ;
    private String studentTel ;
    private Class classes ;

    public int getStudentId() {
        return studentId;
    }

    public void setStudentId(int studentId) {
        this.studentId = studentId;
    }

    public String getStudentName() {
        return studentName;
    }

    public void setStudentName(String studentName) {
        this.studentName = studentName;
    }

    public String getStudentSex() {
        return studentSex;
    }

    public void setStudentSex(String studentSex) {
        this.studentSex = studentSex;
    }

    public String getStudentTel() {
        return studentTel;
    }

    public void setStudentTel(String studentTel) {
        this.studentTel = studentTel;
    }

    public Class getClasses() {
        return classes;
    }

    public void setClasses(Class classes) {
        this.classes = classes;
    }

    @Override
    public String
    toString() {
        final StringBuilder sb = new StringBuilder("Student{");
        sb.append("studentId=").append(studentId);
        sb.append(", studentName='").append(studentName).append('\'');
        sb.append(", studentSex='").append(studentSex).append('\'');
        sb.append(", studentTel='").append(studentTel).append('\'');
        sb.append(", classes=").append(classes);
        sb.append('}');
        return sb.toString();
    }
}

package mybatis.bean;

import java.util.List;

public class Teacher {
    private int tid ;
    private String tname ;
    private List<Class> classList;

    public int getTid() {
        return tid;
    }

    public void setTid(int tid) {
        this.tid = tid;
    }

    public String getTname() {
        return tname;
    }

    public void setTname(String tname) {
        this.tname = tname;
    }

    public List<Class> getClassList() {
        return classList;
    }

    public void setClassList(List<Class> classList) {
        this.classList = classList;
    }

    @Override
    public String toString() {
        final StringBuilder sb = new StringBuilder("Teacher{");
        sb.append("tid=").append(tid);
        sb.append(", tname='").append(tname).append('\'');
        sb.append(", classList=").append(classList);
        sb.append('}');
        return sb.toString();
    }
}

mapper接口和mapper映射文件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
log4j.properties

log4j.rootLogger=debug,console
### appender.console输出到控制台 ###
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=<%d> %5p (%F:%L) [%t] (%c) - %m%n
log4j.appender.console.Target=System.out

## appender.logfile输出到日志文件 ###
log4j.appender.logfile=org.apache.log4j.RollingFileAppender
log4j.appender.logfile.File=SysLog.log
log4j.appender.logfile.MaxFileSize=500KB
log4j.appender.logfile.MaxBackupIndex=7
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=<%d> %p (%F:%L) [%t] %c - %m%n

数据库文件

/*
SQLyog Ultimate v12.08 (64 bit)
MySQL - 5.5.12 : Database - test2
*********************************************************************
*/


/*!40101 SET NAMES utf8 */;

/*!40101 SET SQL_MODE=''*/;

/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/`test2` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_bin */;

USE `test2`;

/*Table structure for table `class` */

DROP TABLE IF EXISTS `class`;

CREATE TABLE `class` (
  `cid` int(11) NOT NULL AUTO_INCREMENT COMMENT '班级编号',
  `cname` varchar(100) COLLATE utf8_bin DEFAULT NULL COMMENT '班级名称',
  PRIMARY KEY (`cid`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

/*Data for the table `class` */

insert  into `class`(`cid`,`cname`) values (1,'静态网页编程'),(2,'Java'),(3,'数据库编程');

/*Table structure for table `student` */

DROP TABLE IF EXISTS `student`;

CREATE TABLE `student` (
  `studentId` int(11) NOT NULL AUTO_INCREMENT COMMENT '学生id',
  `studentName` varchar(100) COLLATE utf8_bin DEFAULT NULL COMMENT '学生姓名',
  `studentSex` char(1) COLLATE utf8_bin DEFAULT NULL COMMENT '学生性别',
  `studentTel` varchar(100) COLLATE utf8_bin DEFAULT NULL COMMENT '学生电话',
  `classid` int(11) NOT NULL COMMENT '学生班级',
  PRIMARY KEY (`studentId`,`classid`),
  KEY `fk_stu_class_cid` (`classid`),
  CONSTRAINT `fk_stu_class_cid` FOREIGN KEY (`classid`) REFERENCES `class` (`cid`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

/*Data for the table `student` */

insert  into `student`(`studentId`,`studentName`,`studentSex`,`studentTel`,`classid`) values (1,'张三1','男','123456',1),(2,'张三2','男','123456',2),(3,'张三3',NULL,NULL,1),(4,'张三4',NULL,NULL,1),(5,'张三5',NULL,NULL,1),(6,'张三6',NULL,NULL,1);

/*Table structure for table `teacher` */

DROP TABLE IF EXISTS `teacher`;

CREATE TABLE `teacher` (
  `tid` int(11) NOT NULL,
  `tname` varchar(100) COLLATE utf8_bin DEFAULT NULL,
  PRIMARY KEY (`tid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

/*Data for the table `teacher` */

insert  into `teacher`(`tid`,`tname`) values (1,'张老师'),(2,'徐老师');

/*Table structure for table `teacher_class` */

DROP TABLE IF EXISTS `teacher_class`;

CREATE TABLE `teacher_class` (
  `cid` int(11) NOT NULL COMMENT '班级编号',
  `tid` int(11) NOT NULL COMMENT '老师编号',
  PRIMARY KEY (`cid`,`tid`),
  KEY `fk_teachertoClass_teacher` (`tid`),
  CONSTRAINT `fk_teachertoClass_class` FOREIGN KEY (`cid`) REFERENCES `class` (`cid`),
  CONSTRAINT `fk_teachertoClass_teacher` FOREIGN KEY (`tid`) REFERENCES `teacher` (`tid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

/*Data for the table `teacher_class` */

insert  into `teacher_class`(`cid`,`tid`) values (1,1),(2,2);

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

数据库引入文件db.properties

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test2
jdbc.username=root
jdbc.password=123456

测试文件

import mybatis.bean.Class;
import mybatis.bean.Student;
import mybatis.bean.Teacher;
import mybatis.mapper.ClassMapper;
import mybatis.mapper.StudentMapper;
import mybatis.mapper.TeacherMapper;
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.After;
import org.junit.Before;

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

public class Test {
    InputStream inputStream = null;
    SqlSession sqlSession = null ;



    @Before
    public  void before () throws IOException {
        inputStream  = Resources.getResourceAsStream("mybatis-config.xml");

        SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();

        SqlSessionFactory factory = builder.build(inputStream);

        sqlSession = factory.openSession();

    }

    @After
    public void after() throws IOException {
        sqlSession.close();
        inputStream.close();
    }

    @org.junit.Test
    public void testAllStudents() throws IOException {
        StudentMapper studentMapper =
                sqlSession.getMapper(StudentMapper.class);

        List<Student>students = studentMapper.selectAllStudents();

        students.forEach(System.out::println);


    }

    @org.junit.Test
    public void testAllStudentsInClass() throws IOException {
        ClassMapper classMapper =
                sqlSession.getMapper(ClassMapper.class);

        List<Class> classList = classMapper.selectAllStudentsByClass();

        classList.forEach(System.out::println);


    }


    @org.junit.Test
    public void testAllTeachers() throws IOException {
        TeacherMapper teacherMapper =
                sqlSession.getMapper(TeacherMapper.class);

        List<Teacher> teachers = teacherMapper.findAll();

        teachers.forEach(System.out::println);


    }



}

🔥一、一对一查询

映射文件
在这里插入图片描述
mapper接口
在这里插入图片描述
测试
在这里插入图片描述
在这里插入图片描述

✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨

🔥二、一对多查询

映射文件
在这里插入图片描述

mapper接口
在这里插入图片描述

测试
在这里插入图片描述
在这里插入图片描述

✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨

🔥三、多对多查询

mapper接口
在这里插入图片描述

映射文件
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨

举报

相关推荐

0 条评论