博客
关于我
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中怎样使用update更新某列的数据减去指定值
查看>>
Mysql中怎样设置指定ip远程访问连接
查看>>
mysql中数据表的基本操作很难嘛,由这个实验来带你从头走一遍
查看>>
Mysql中文乱码问题完美解决方案
查看>>
mysql中的 +号 和 CONCAT(str1,str2,...)
查看>>
Mysql中的 IFNULL 函数的详解
查看>>
mysql中的collate关键字是什么意思?
查看>>
MySql中的concat()相关函数
查看>>
mysql中的concat函数,concat_ws函数,concat_group函数之间的区别
查看>>
MySQL中的count函数
查看>>
MySQL中的DB、DBMS、SQL
查看>>
MySQL中的DECIMAL类型:MYSQL_TYPE_DECIMAL与MYSQL_TYPE_NEWDECIMAL详解
查看>>
MySQL中的GROUP_CONCAT()函数详解与实战应用
查看>>
MySQL中的IO问题分析与优化
查看>>
MySQL中的ON DUPLICATE KEY UPDATE详解与应用
查看>>
mysql中的rbs,SharePoint RBS:即使启用了RBS,内容数据库也在不断增长
查看>>
mysql中的undo log、redo log 、binlog大致概要
查看>>
Mysql中的using
查看>>
MySQL中的关键字深入比较:UNION vs UNION ALL
查看>>