MyBatis 实现一对一,一对多关联查询,HTTPS 面试常问全解析
班 Java 开源项目【ali1024.coding.net/public/P7/Java/git】 级 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 = 《一线大厂 Java 面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》开源 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 项目,工程目录如下
[](()新建 Spring Boot 项目
[](()在 pom.xml 文件中添加如下依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
[](()在 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
[](()新建老师类 Teacher
@Data
public class Teacher {
private int id;
private String name;
}
[](()新建班级类 Classes
@Data
public class Classes {
private int id;
private String name;
private Teacher teacher;
private List<Student> studentList;
}
[](()新建学生类 Student
总结
机会是留给有准备的人,大家在求职之前应该要明确自己的态度,熟悉求职流程,做好充分的准备,把一些可预见的事情做好。
对于应届毕业生来说,校招更适合你们,因为绝大部分都不会有工作经验,企业也不会有工作经验的需求。同时,你也不需要伪造高大上的实战经验,以此让自己的简历能够脱颖而出,反倒会让面试官有所怀疑。
你在大学时期应该明确自己的发展方向,如果你在大一就确定你以后想成为 Java 工程师,那就不要花太多的时间去学习其他的技术语言,高数之类的,不如好好想着如何夯实 Java 基础。下图涵盖了应届生乃至转行过来的小白要学习的 Java 内容:
请转发本文支持一下
评论