写点什么

MyBatis 实现一对一,一对多关联查询,HTTPS 面试常问全解析

  • 2022 年 4 月 22 日
  • 本文字数:2193 字

    阅读完需:约 7 分钟



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 内容:


请转发本文支持一下




用户头像

还未添加个人签名 2022.04.13 加入

还未添加个人简介

评论

发布
暂无评论
MyBatis实现一对一,一对多关联查询,HTTPS面试常问全解析_Java_爱好编程进阶_InfoQ写作社区