博客
关于我
MyBatis(6)——多对一和一对多处理
阅读量:524 次
发布时间:2019-03-08

本文共 5752 字,大约阅读时间需要 19 分钟。

1 多对一处理

多个学生关联一个老师

1.1 环境配置

pom.xml

myBatis
org.example
1.0-SNAPSHOT
4.0.0
myBatis_01
8
8
src/main/java
**/*.xml
**/*.properties
src/main/resources
**/*.xml
**/*.properties
log4j
log4j
1.2.17
org.projectlombok
lombok
1.16.10

核心配置文件mybatis-config.xml

数据库

/* Navicat Premium Data Transfer Source Server         : localhost Source Server Type    : MySQL Source Server Version : 50527 Source Host           : localhost:3306 Source Schema         : mybatis Target Server Type    : MySQL Target Server Version : 50527 File Encoding         : 65001 Date: 20/01/2021 12:12:55*/SET NAMES utf8mb4;SET FOREIGN_KEY_CHECKS = 0;-- ------------------------------ Table structure for student-- ----------------------------DROP TABLE IF EXISTS `student`;CREATE TABLE `student`  (  `id` int(11) NOT NULL,  `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,  `tid` int(11) DEFAULT NULL,  PRIMARY KEY (`id`) USING BTREE,  INDEX `tid`(`tid`) USING BTREE,  CONSTRAINT `tid` FOREIGN KEY (`tid`) REFERENCES `teacher` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;SET FOREIGN_KEY_CHECKS = 1;
/* Navicat Premium Data Transfer Source Server         : localhost Source Server Type    : MySQL Source Server Version : 50527 Source Host           : localhost:3306 Source Schema         : mybatis Target Server Type    : MySQL Target Server Version : 50527 File Encoding         : 65001 Date: 20/01/2021 12:25:12*/SET NAMES utf8mb4;SET FOREIGN_KEY_CHECKS = 0;-- ------------------------------ Table structure for teacher-- ----------------------------DROP TABLE IF EXISTS `teacher`;CREATE TABLE `teacher`  (  `id` int(11) NOT NULL,  `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,  PRIMARY KEY (`id`) USING BTREE) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;-- ------------------------------ Records of teacher-- ----------------------------INSERT INTO `teacher` VALUES (1, 'teacher_zs');SET FOREIGN_KEY_CHECKS = 1;

实体类的构建

@Datapublic class Student {       private int id;    private String name;   //多个学生可以是同一个老师,即多对一    private Teacher teacher;}
@Datapublic class Teacher {       private int id;    private String name;}

接口的构建

public interface TeacherMapper {       @Select("select * from teacher where id = #{id}")    Teacher getTeacherById(@Param("id") int id);}

测试类的编写

public class DaoTest {       //注意导包:org.apache.log4j.Logger    static Logger logger = Logger.getLogger(DaoTest.class);    @Test    public  void test(){          try(SqlSession sqlSession = MyBatisUtils.getSqlSesion();){              TeacherMapper mapper = sqlSession.getMapper(TeacherMapper.class);           Teacher teacher = mapper.getTeacherById(1);           System.out.println(teacher);       }    }}

测试成功!!!

1.2 按查询嵌套处理

StudentMapper.xml

测试类

@Test    public void getStudent() {           try(SqlSession sqlSession = MyBatisUtils.getSqlSesion();){               StudentMapper mapper = sqlSession.getMapper(StudentMapper.class);            List
studentList = mapper.getStudents(); System.out.println(studentList); } }

在这里插入图片描述

1.3 按结果嵌套处理

2 一对多处理

2.1 按结果嵌套处理

实体类的编写

@Datapublic class Student {      private int id;   private String name;   private int tid;}
@Data public class Teacher {      private int id;   private String name;   //一个老师多个学生   private List
students;}

TeacherMapper接口编写方法

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

编写接口对应的Mapper配置文件

测试类

public class DaoTest {       //注意导包:org.apache.log4j.Logger    static Logger logger = Logger.getLogger(DaoTest.class);    @Test    public  void test(){          try(SqlSession sqlSession = MyBatisUtils.getSqlSesion();){              TeacherMapper mapper = sqlSession.getMapper(TeacherMapper.class);           Teacher teacher = mapper.getTeacher(1);           System.out.println(teacher);       }    }}

在这里插入图片描述

转载地址:http://zeenz.baihongyu.com/

你可能感兴趣的文章
mysql case when 乱码_Mysql CASE WHEN 用法
查看>>
Multicast1
查看>>
MySQL Cluster 7.0.36 发布
查看>>
Multimodal Unsupervised Image-to-Image Translation多通道无监督图像翻译
查看>>
MySQL Cluster与MGR集群实战
查看>>
multipart/form-data与application/octet-stream的区别、application/x-www-form-urlencoded
查看>>
mysql cmake 报错,MySQL云服务器应用及cmake报错解决办法
查看>>
Multiple websites on single instance of IIS
查看>>
mysql CONCAT()函数拼接有NULL
查看>>
multiprocessing.Manager 嵌套共享对象不适用于队列
查看>>
multiprocessing.pool.map 和带有两个参数的函数
查看>>
MYSQL CONCAT函数
查看>>
multiprocessing.Pool:map_async 和 imap 有什么区别?
查看>>
MySQL Connector/Net 句柄泄露
查看>>
multiprocessor(中)
查看>>
mysql CPU使用率过高的一次处理经历
查看>>
Multisim中555定时器使用技巧
查看>>
MySQL CRUD 数据表基础操作实战
查看>>
multisim变压器反馈式_穿过隔离栅供电:认识隔离式直流/ 直流偏置电源
查看>>
mysql csv import meets charset
查看>>