
- 数据库创建
- 代码
- Springboot环境搭建
- Maven环境搭建
- application.yml环境搭建
- entity搭建
- Student 实体类
- Teacher实体类创建
- Dao 接口搭建
- 关键部分多对一mybatis.xml编写
- 多对一association的理解
- 结果
- 关键部分一对多mybatis.xml编写
- 多对一collection理解
- 结果
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');
Springboot环境搭建
Maven环境搭建
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.7</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.27</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.2</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
application.yml环境搭建
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/blogcrunchy?useUnicode=true&characterEncoding=utf8
username: root
password: 123456
mybatis:
mapper-locations: classpath:mapper/*.xml # mapper映射文件位置
type-aliases-package: com.example.demo.entity # entity包路径
configuration:
map-underscore-to-camel-case: true # mybatis来开启驼峰功能
entity搭建
Student 实体类
package com.example.demo.entity;
import lombok.Data;
@Data
public class Student {
private Integer id;
private String name;
private Integer tid;
private Teacher teacher; //注意此处 在mybatis.xml文件里面会有区别 此处为实体类
}
Teacher实体类创建
package com.example.demo.entity;
import lombok.Data;
import java.util.List;
@Data
public class Teacher {
private Integer id;
private String name;
private List<Student> students; //注意此处 在mybatis.xml文件里面会有区别 此处为集合实体类
}
Dao 接口搭建
package com.example.demo.dao;
import com.example.demo.entity.Student;
import com.example.demo.entity.Teacher;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
@Mapper
@Repository
public interface TestDao {
//多对一
List<Student> manyToOne();
// 一对多
Teacher oneToMany(@Param("id") Integer id);
}
关键部分多对一mybatis.xml编写
DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.example.demo.dao.TestDao">
<resultMap id="UsernameAndPassword" type="com.example.demo.entity.Student">
<id property="id" column="id"/>
<result property="name" column="name"/>
<association property="teacher" javaType="com.example.demo.entity.Teacher">
<result property="id" column="tid"/>
<result property="name" column="tname"/>
association>
resultMap>
<select id="manyToOne" resultMap="UsernameAndPassword">
SELECT s.*,t.`id` tid,t.`name` tname FROM student s, teacher t WHERE s.`id` = t.`id`;
select>
mapper>
多对一association的理解
还记得此处定义的数据类型吗?这里的数据类型是Teacher实体类,所以在.xml编写的是需要注意,而.xml执行的时候需要找到实体类才可以继续下面的 *** 作,javaType的作用就是找到实体类的包,property此处配置的为Student实体类中定义的名称。
DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.example.demo.dao.TestDao">
<select id="oneToMany" resultMap="OneToMany">
SELECT s.*,t.`name` tname, t.`id` ttid
FROM student s, teacher t
WHERE s.`tid` = t.`id` AND t.`id`=#{id};
select>
<resultMap id="OneToMany" type="com.example.demo.entity.Teacher">
<result property="id" column="ttid"/>
<result property="name" column="tname"/>
<collection property="students" ofType="com.example.demo.entity.Student">
<result property="id" column="id"/>
<result property="name" column="name"/>
<result property="tid" column="tid"/>
collection>
resultMap>
mapper>
多对一collection理解
此处使用的是List集合,所以使用collection,与association的区别为此处寻找实体类包的方法为ofType
学习链接:https://www.bilibili.com/video/BV1NE411Q7Nx?p=21&spm_id_from=pageDriver
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)