# 複雜查詢環境搭建 ###### tags: `Mybatis-查詢環境` ## 多對一處理 ### 多對一: * 多個學生,對應一個老師 * 對於學生而言,**關聯**,多個學生,關聯一個老師【多對一】 * 對於老師而言,**集合**,一個老師,有很多學生【一對多】 #### SQL: ```sql= CREATE TABLE `teacher` ( `id` INT(10) NOT NULL, `name` VARCHAR(30) 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(30) DEFAULT NULL, `tid` INT(10) DEFAULT NULL, PRIMARY KEY (`id`), KEY `fktid` (`tid`), CONSTRAINT `fktid` FOREIGN KEY (`tid`) REFERENCES `teacher` (`id`) ) 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 ('4', '小李', '1'); INSERT INTO `student` (`id`, `name`, `tid`) VALUES ('5', '小王', '1'); ``` 多對一的關係,學生的TID對應老師的ID ![](https://i.imgur.com/SXAUNyz.png) ### 測試環境搭建 1.導入lombok 2.新建實體類Teacher、Student ```java= @Data public class Teacher { private int id; private String name; } ``` ```java= @Data public class Student { private int id; private String name; //學生需要關聯一個老師! private Teacher teacher; } ``` 3.建立Mapper接口 ```java= public interface TeacherMapper { @Select("select * from teacher where id = #{tid}") Teacher getTeacher(@Param("tid") int id); } ``` 4.建立Mapper.xml文件 ```xml= <?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.kuang.dao.StudentMapper"> </mapper> ``` 5.在核心配置文件中綁定註冊Mapper接口或文件 ```xml= <mappers> <mapper class="com.kuang.dao.TeacherMapper"/> <mapper class="com.kuang.dao.StudentMapper"/> </mappers> ``` 6.測試查詢是否能成功 ```java= public class MyTest { public static void main(String[] args) { SqlSession sqlSession = MybatisUtils.getSqlSession(); TeacherMapper mapper = sqlSession.getMapper(TeacherMapper.class); Teacher teacher = mapper.getTeacher(1); System.out.println(teacher); sqlSession.close(); } } ```