博客
关于我
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/

你可能感兴趣的文章
MySQL8找不到my.ini配置文件以及报sql_mode=only_full_group_by解决方案
查看>>
mysql8的安装与卸载
查看>>
MySQL8,体验不一样的安装方式!
查看>>
MySQL: Host '127.0.0.1' is not allowed to connect to this MySQL server
查看>>
Mysql: 对换(替换)两条记录的同一个字段值
查看>>
mysql:Can‘t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock‘解决方法
查看>>
MYSQL:基础——3N范式的表结构设计
查看>>
MYSQL:基础——触发器
查看>>
Mysql:连接报错“closing inbound before receiving peer‘s close_notify”
查看>>
mysqlbinlog报错unknown variable ‘default-character-set=utf8mb4‘
查看>>
mysqldump 参数--lock-tables浅析
查看>>
mysqldump 导出中文乱码
查看>>
mysqldump 导出数据库中每张表的前n条
查看>>
mysqldump: Got error: 1044: Access denied for user ‘xx’@’xx’ to database ‘xx’ when using LOCK TABLES
查看>>
Mysqldump参数大全(参数来源于mysql5.5.19源码)
查看>>
mysqldump备份时忽略某些表
查看>>
mysqldump实现数据备份及灾难恢复
查看>>
mysqldump数据库备份无法进行操作只能查询 --single-transaction
查看>>
mysqldump的一些用法
查看>>
mysqli
查看>>