一对一
准备工作
数据库表
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 {
/**
* @description 编号
*/
private String id;
/**
* @description 用户名
*/
private String userName;
/**
* @description 生日
*/
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date birthday;
/**
* @description 性别
*/
private String sex;
/**
* @description 家庭住址
*/
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 {
/**
* @description 用户编号
*/
private String id;
/**
* @description 用户名
*/
private String userName;
/**
* @description 出生年月日
*/
private Date birthday;
/**
* @description 性别
*/
private String sex;
/**
* @description 家庭地址
*/
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
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.geekmice.onetomany.dao.IUserAccountDao" >
<resultMap id="userAccountMap" type="com.geekmice.onetomany.bo.User">
<id property="id" column="id"/>
<result property="userName" column="user_name"/>
<result property="birthday" column="birthday"/>
<result property="sex" column="sex"/>
<result property="address" column="address"/>
<association property="account" javaType="com.geekmice.onetomany.bo.Account">
<result property="uId" column="uid"/>
<result property="money" column="money"/>
</association>
</resultMap>
<select id="getAccountByUser" resultMap="userAccountMap">
SELECT
a.uid,
a.money,
b.user_name,
b.id,
b.birthday,
b.sex,
b.address
FROM
account a
LEFT JOIN `user` b
ON
a.uid = b.id
<where>
<if test="userName != null and userName != '' ">
and b.user_name = #{userName}
</if>
</where>
</select>
</mapper>
对应的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;
/*!40000 ALTER TABLE `tmp_teacher` DISABLE KEYS */;
INSERT INTO `tmp_teacher` VALUES ('1','王老师'),('2','刘老师'),('3','张老师'),('4','陆老师'),('5','华老师');
实体类
TmpTeacher.java
package com.geekmice.onetomany.bo;
import java.util.List;
public class TmpTeacher {
/**
* @descripton 教师编号
*/
private String tId;
/**
* @description 教师名
*/
private String name;
private List<TmpStudent> 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<TmpStudent> getStudentList() {
return studentList;
}
public void setStudentList(List<TmpStudent> 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 {
/**
* @description 学生编号
*/
private String id;
/**
* @description 学生姓名
*/
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
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.geekmice.onetomany.dao.ITeacherStudentDao">
<resultMap id="teacherStudentInfo" type="com.geekmice.onetomany.bo.TmpTeacher">
<id column="bId" property="tId"/>
<result column="teaName" property="name"/>
<collection property="studentList" ofType="com.geekmice.onetomany.bo.TmpStudent">
<result column="stuName" property="name"/>
<result column="aId" property="id"/>
</collection>
</resultMap>
<select id="getTeacherInfo" resultMap="teacherStudentInfo" >
SELECT
b.id bId,
a.id aId,
a.name stuName,
b.name teaName
FROM
tmp_student a
LEFT JOIN tmp_teacher b
ON
a.t_id = b.id
where b.name = '刘老师'
<!-- <where>-->
<!-- <if test="name != null and name != ''">-->
<!-- and b.name =#{name}-->
<!-- </if>-->
<!-- </where>-->
</select>
</mapper>
对应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调用
参考博客