班级classes与老师teacher是一对一的关系
班级classes与学生student是一对多的关系
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
– Table structure for classes
DROP TABLE IF EXISTS classes
;
CREATE TABLE classes
(
c_id
int(11) NOT NULL AUTO_INCREMENT COMMENT ‘班级id’,
c_name
varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT ‘班级名’,
teacher_id
int(11) NULL DEFAULT NULL COMMENT ‘老师id’,
PRIMARY KEY (c_id
) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic COMMENT ‘班级表’;
– Records of classes
INSERT INTO classes
VALUES (1, ‘高三2班’, 1);
INSERT INTO classes
VALUES (2, ‘高一4班’, 2);
– Table structure for teacher
DROP TABLE IF EXISTS teacher
;
CREATE TABLE teacher
(
t_id
int(11) NOT NULL AUTO_INCREMENT COMMENT ‘老师id’,
t_name
varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT ‘老师姓名’,
PRIMARY KEY (t_id
) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic COMMENT ‘老师表’;
– Records of teacher
INSERT INTO teacher
VALUES (1, ‘老师张三’);
INSERT INTO teacher
VALUES (2, ‘老师李四’);
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
– Table structure for student
DROP TABLE IF EXISTS student
;
CREATE TABLE student
(
s_id
int(11) NOT NULL AUTO_INCREMENT COMMENT ‘学生id’,
s_name
varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT ‘学生姓名’,
class_id
int(11) NULL DEFAULT NULL COMMENT ‘班级id’,
PRIMARY KEY (s_id
) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic COMMENT ‘学生表’;
– Records of student
INSERT INTO student
VALUES (1, ‘学生小明’, 1);
INSERT INTO student
VALUES (2, ‘学生小陈’, 1);
INSERT INTO student
VALUES (3, ‘学生小张’, 2);
SET FOREIGN_KEY_CHECKS = 1;
数据库准备工作完成后,使用IDEA新建一个Spring Boot项目,工程目录如下
org.springframework.boot
spring-boot-starter-web
org.mybatis.spring.boot
mybatis-spring-boot-starter
2.1.0
mysql
mysql-connector-java
runtime
org.projectlombok
lombok
true
org.springframework.boot
spring-boot-starter-test
test
在application.yml文件中进行数据库和mybatis配置
spring配置
spring:
数据库配置
datasource:
type: com.zaxxer.hikari.HikariDataSource
url: jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&allowMultiQueries=true&useSSL=false&tinyInt1isBit=false&serverTimezone=GMT%2B8
driverClassName: com.mysql.cj.jdbc.Driver
username: root
password: root
mybatis配置
mybatis:
给实体类配置别名
type-aliases-package: com.jourwon.*.pojo
加载mybatis的mapper配置文件
mapper-locations: classpath:mybatis/mapper/**/*Mapper.xml
configuration:
开发环境控制台打印sql语句
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
开启驼峰规则自动映射字段属性值;如字段为user_name的可以映射到userName属性中
map-underscore-to-camel-case: true
设置sql执行超时时间,以秒为单位的全局sql超时时间设置,当超出了设置的超时时间时,会抛出SQLTimeoutException
default-statement-timeout: 30
解决查询返回结果含null没有对应字段值问题
call-setters-on-nulls: true
@Data
public class Teacher {
private int id;
private String name;
}
@Data
public class Classes {
private int id;
private String name;
private Teacher teacher;
private List studentList;
}
@Data
public class Student {
private int id;
private String name;
}
<?xml version="1.0" encoding="UTF-8"?>
select * from classes c,teacher t where c.teacher_id=t.t_id and c.c_id=#{id}
我的面试宝典:一线互联网大厂Java核心面试题库
以下是我个人的一些做法,希望可以给各位提供一些帮助:
整理了很长一段时间,拿来复习面试刷题非常合适,其中包括了Java基础、异常、集合、并发编程、JVM、Spring全家桶、MyBatis、Redis、数据库、中间件MQ、Dubbo、Linux、Tomcat、ZooKeeper、Netty等等,且还会持续的更新…可star一下!
283页的Java进阶核心pdf文档
Java部分:Java基础,集合,并发,多线程,JVM,设计模式
数据结构算法:Java算法,数据结构
开源框架部分:Spring,MyBatis,MVC,netty,tomcat
分布式部分:架构设计,Redis缓存,Zookeeper,kafka,RabbitMQ,负载均衡等
微服务部分:SpringBoot,SpringCloud,Dubbo,Docker
还有源码相关的阅读学习
bbo、Linux、Tomcat、ZooKeeper、Netty等等,且还会持续的更新…可star一下!
[外链图片转存中…(img-1tblgiyn-1719284077217)]
283页的Java进阶核心pdf文档
Java部分:Java基础,集合,并发,多线程,JVM,设计模式
数据结构算法:Java算法,数据结构
开源框架部分:Spring,MyBatis,MVC,netty,tomcat
分布式部分:架构设计,Redis缓存,Zookeeper,kafka,RabbitMQ,负载均衡等
微服务部分:SpringBoot,SpringCloud,Dubbo,Docker
[外链图片转存中…(img-sCCakMXZ-1719284077218)]
还有源码相关的阅读学习
[外链图片转存中…(img-dIkckUwA-1719284077218)]