- 一对一
- 数据库表
- 实体类
- 对应的xml
- 对应的controller
- 一对多
- 数据库表
- 实体类
- 对应dao层
- 对应xml
- 对应controller
- postman调用
准备工作
数据库表DROp TABLE IF EXISTS `account`;
CREATE TABLE `account` (
`id` varchar(100) DEFAULT NULL,
`uid` varchar(100) DEFAULT NULL,
`money` decimal(10,0) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
INSERT INTO `account` VALUES ('1','41',10000),('2','42',20000),('3','43',30000);
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` varchar(100) DEFAULT NULL,
`user_name` varchar(100) DEFAULT NULL,
`birthday` date DEFAULT NULL COMMENT '生日',
`sex` varchar(100) DEFAULT NULL,
`address` varchar(100) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
INSERT INTO `user` VALUES ('41','小王','2022-02-27','男','河南'),('42','小李','2021-07-01','女','江苏'),('43','小红','2019-08-01','女','湖北');
实体类
Account.java
package com.jack.springbootmybatis.pojo;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
public class Account {
private String id;
private String userName;
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date birthday;
private String sex;
private String address;
private User user;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
@Override
public String toString() {
return "Account{" +
"id='" + id + ''' +
", userName='" + userName + ''' +
", birthday=" + birthday +
", sex='" + sex + ''' +
", address='" + address + ''' +
", user=" + user +
'}';
}
}
User.java
package com.geekmice.onetomany.bo;
import java.util.Date;
public class User {
private String id;
private String userName;
private Date birthday;
private String sex;
private String address;
private Account account;
public Account getAccount() {
return account;
}
public void setAccount(Account account) {
this.account = account;
}
@Override
public String toString() {
return "User{" +
"id='" + id + ''' +
", userName='" + userName + ''' +
", birthday=" + birthday +
", sex='" + sex + ''' +
", address='" + address + ''' +
", account=" + account +
'}';
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
对应的xml
AccountToUserMapper.xml
对应的controller
@RestController
public class UserAccountController {
@Resource
private IUserAccountDao iUserAccountDao;
@PostMapping("/getAccountByUser")
public User getAccountByUser(@RequestBody User user){
return iUserAccountDao.getAccountByUser(user);
}
}
postman调用
理解:
一个学生对应多门科目成绩
DROP TABLE IF EXISTS `tmp_student`;
CREATE TABLE `tmp_student` (
`id` varchar(100) DEFAULT NULL,
`name` varchar(100) DEFAULT NULL,
`t_id` varchar(100) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
INSERT INTO `tmp_student` VALUES ('1','小王','1'),('2','小红','2'),('3','小张','2'),('4','小李','2'),('5','小黄','5'),('1','小王','1'),('2','小红','2'),('3','小张','2'),('4','小李','2'),('5','小黄','5');
DROP TABLE IF EXISTS `tmp_teacher`;
CREATE TABLE `tmp_teacher` (
`id` varchar(100) DEFAULT NULL,
`name` varchar(100) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
;
INSERT INTO `tmp_teacher` VALUES ('1','王老师'),('2','刘老师'),('3','张老师'),('4','陆老师'),('5','华老师');
实体类
TmpTeacher.java
package com.geekmice.onetomany.bo;
import java.util.List;
public class TmpTeacher {
private String tId;
private String name;
private List studentList;
public String gettId() {
return tId;
}
public void settId(String tId) {
this.tId = tId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List getStudentList() {
return studentList;
}
public void setStudentList(List studentList) {
this.studentList = studentList;
}
@Override
public String toString() {
return "TmpTeacher{" +
"tId='" + tId + ''' +
", name='" + name + ''' +
", studentList=" + studentList +
'}';
}
}
TmpStudent .java
package com.geekmice.onetomany.bo;
import java.util.List;
public class TmpStudent {
private String id;
private String name;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "TmpStudent{" +
"id='" + id + ''' +
", name='" + name + ''' +
'}';
}
}
对应dao层
package com.geekmice.onetomany.dao;
import com.geekmice.onetomany.bo.TmpTeacher;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface ITeacherStudentDao {
TmpTeacher getTeacherInfo();
}
对应xml
对应controller
package com.geekmice.onetomany.controller;
import com.geekmice.onetomany.bo.TmpTeacher;
import com.geekmice.onetomany.dao.ITeacherStudentDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class TeacherStudentController {
@Autowired
private ITeacherStudentDao iTeacherStudentDao;
@GetMapping("/getTeacherInfo")
public TmpTeacher getTeacherInfo() {
return iTeacherStudentDao.getTeacherInfo();
}
}
postman调用
参考博客
1.mybatis一对多&&多对一处理
2.MyBatis 实现一对多有几种方式,怎么操作的?



