diff --git "a/51 \347\250\213\350\210\234/20231219.md" "b/51 \347\250\213\350\210\234/20231219.md"
new file mode 100644
index 0000000000000000000000000000000000000000..9f1cfc79b3b78d55dd33d74d0f3e1d5d9e16ac01
--- /dev/null
+++ "b/51 \347\250\213\350\210\234/20231219.md"
@@ -0,0 +1,98 @@
+## 笔记
+
+### Maven
+
+~~~ md
+Maven是专门用于管理和构建Java项目的工具,它的主要功能有:
+
+提供了一套标准化的项目结构
+
+提供了一套标准化的构建流程(编译,测试,打包,发布……)
+
+提供了一套依赖管理机制
+
+
+仓库分类:
+本地仓库:自己计算机上的一个目录
+
+中央仓库:由Maven团队维护的全球唯一的仓库
+
+地址: https://repo1.maven.org/maven2/
+
+远程仓库(私服):一般由公司团队搭建的私有仓库,国内镜像也是远程仓库的一种
+当项目中使用坐标引入对应依赖jar包后,首先会查找本地仓库中是否有对应的jar
+包:
+如果有,则在项目直接引用;
+
+如果没有,则去中央仓库中下载对应的jar包到本地仓库。
+
+
+Maven 坐标详解
+
+什么是坐标?
+Maven 中的坐标是==资源的唯一标识==
+使用坐标来定义项目或引入项目中需要的依赖
+
+Maven 坐标主要组成
+groupId:定义当前Maven项目隶属组织名称(通常是域名反写,例如:
+com.mdd)
+artifactId:定义当前Maven项目名称(通常是模块名称,例如 order-service、
+goods-service)
+version:定义当前项目版本号
+
+
+使用坐标引入jar包
+使用坐标引入jar包的步骤:
+
+在项目的 pom.xml 中编写 标签
+在 标签中 使用 引入坐标
+定义坐标的 groupId,artifactId,version
+点击刷新按钮,使坐标生效
+
+
+依赖范围
+通过设置坐标的依赖范围(scope),可以设置 对应jar包的作用范围:编译环境、测试
+环境、运行环境。
+如下图所示给 junit 依赖通过 scope 标签指定依赖的作用范围。 那么这个依赖就
+只能作用在测试环境,其他环境下不能使用。
+
+compile :作用于编译环境、测试环境、运行环境。
+test : 作用于测试环境。典型的就是Junit坐标,以后使用Junit时,都会将scope
+指定为该值
+provided :作用于编译环境、测试环境。我们后面会学习 servlet-api ,在使
+用它时,必须将 scope 设置为该值,不然运行时就会报错
+runtime : 作用于测试环境、运行环境。jdbc驱动一般将 scope 设置为该值,
+当然不设置也没有任何问题
+注意:
+如果引入坐标不指定 scope 标签时,默认就是 compile 值。以后大部分
+jar包都是使用默认值。
+~~~
+
+## 作业
+
+~~~ java
+
+
+ junit
+ junit
+ 4.13.2
+ test
+
+
+~~~
+
+~~~ java
+import org.junit.Test;
+
+public class APP {
+ @Test
+ public void test01(){
+ System.out.println(999);
+ }
+ @Test
+ public void test02(){
+ System.out.println("吃饭了吗");
+ }
+}
+
+~~~
\ No newline at end of file
diff --git "a/51 \347\250\213\350\210\234/20231220.md" "b/51 \347\250\213\350\210\234/20231220.md"
new file mode 100644
index 0000000000000000000000000000000000000000..7e3fabda68cca047f250d538bb7d97af354106ff
--- /dev/null
+++ "b/51 \347\250\213\350\210\234/20231220.md"
@@ -0,0 +1,315 @@
+## Mybatis 第2版(Mapper代理方式)
+
+**可做优化:**
+
+1. 设置别名
+
+2. 参数写到专属文件,解除硬编码【写死在源代码中,而源代码有所改动,就要重新编译,测试,打包,整个流程,耦合度太高,好比把电池焊死在手机主板上了,不方便换电池,而且只能用专用品牌的电池,解耦,或解除硬编码编程方式,就好比可以随意换电池的玩具,只认型号,不认品牌,只要是5号电池就可以用。】
+
+### 总结
+
+使用Mapper代理方式,必须满足以下要求:
+
+1. 定义与SQL映射文件同名的Mapper接口,
+2. 在 Mapper 接口中定义方法,方法名就是SQL映射文件中sql语句的id,并保持参数类型和返回值类型一致
+3. 设置SQL映射文件的namespace属性为Mapper接口全限定名
+4. 核心配置文件中的mapper路径要根据sql映射文件的实际路径改变(具体文件或包扫描)
+5. 执行sql的方法改成getMapper()的方法
+
+### 例题:
+
+**1.** **创建 brand 表,添加数据**
+
+~~~ mysql
+-- 删除tb_brand表
+drop table if exists tb_brand;
+-- 创建tb_brand表
+create table tb_brand(
+ id int primary key auto_increment, -- id 主键
+ brand_name varchar(20), -- 品牌名称
+ company_name varchar(20), -- 企业名称
+ ordered int, -- 排序字段
+ description varchar(100), -- 描述信息
+ status int -- 状态:0:禁用 1:启用
+);
+-- 添加数据
+insert into tb_brand (brand_name, company_name, ordered, description, status)
+values ('三只松鼠', '三只松鼠股份有限公司', 5, '好吃不上火', 0),
+ ('华为', '华为技术有限公司', 100, '华为致力于把数字世界带入每个人、每个家庭、每个组织,构建万物互联的智能世界', 1),
+ ('小米', '小米科技有限公司', 50, 'are you ok', 1);
+
+SELECT * FROM tb_brand;
+~~~
+
+**2.** **创建模块,根据数据表,编写对应的 java 类**
+
+在 com.mdd.pojo 包下创建 User类
+
+~~~ java
+package com.mdd.pojo;
+
+/**
+ * 品牌
+ *
+ * alt + 鼠标左键:整列编辑
+ *
+ * 在实体类中,基本数据类型建议使用其对应的包装类型
+ */
+
+public class Brand {
+ // id 主键
+ private Integer id;
+ // 品牌名称
+ private String brandName;
+ // 企业名称
+ private String companyName;
+ // 排序字段
+ private Integer ordered;
+ // 描述信息
+ private String description;
+ // 状态:0:禁用 1:启用
+ private Integer status;
+
+ public Integer getId() {
+ return id;
+ }
+
+ public void setId(Integer id) {
+ this.id = id;
+ }
+
+ public String getBrandName() {
+ return brandName;
+ }
+
+ public void setBrandName(String brandName) {
+ this.brandName = brandName;
+ }
+
+ public String getCompanyName() {
+ return companyName;
+ }
+
+ public void setCompanyName(String companyName) {
+ this.companyName = companyName;
+ }
+
+ public Integer getOrdered() {
+ return ordered;
+ }
+
+ public void setOrdered(Integer ordered) {
+ this.ordered = ordered;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ @Override
+ public String toString() {
+ return "Brand{" +
+ "id=" + id +
+ ", brandName='" + brandName + '\'' +
+ ", companyName='" + companyName + '\'' +
+ ", ordered=" + ordered +
+ ", description='" + description + '\'' +
+ ", status=" + status +
+ '}';
+ }
+}
+~~~
+
+**3.** **导入坐标**
+
+在创建好的模块中的 pom.xml 配置文件中添加依赖的坐标
+
+~~~ xml
+
+
+ 4.0.0
+
+ com.mdd
+ mybatis_02
+ 1.0-SNAPSHOT
+
+
+ 17
+ 17
+ UTF-8
+
+
+
+
+
+ com.mysql
+ mysql-connector-j
+ 8.1.0
+
+
+
+ org.mybatis
+ mybatis
+ 3.5.13
+
+
+
+ junit
+ junit
+ 4.13.2
+ test
+
+
+
+
+~~~
+
+**4.** **编写 MyBatis 核心配置文件 - > 替换连接信息**
+
+在模块下的 resources 目录下创建mybatis的配置文件 mybatis-config.xml ,内容如下:
+
+~~~ xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+~~~
+
+**5. 编写 SQL 映射文件 —> 统一管理 sql 语句,在resources下创建与代理商文件路径相同**
+
+将sql映射文件(改成与mapper接口同名)移动到该目录,并将namespace属性为Mapper接口完整路径(引用)
+
+~~~ xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+~~~
+
+**6.定义与 SQL 映射文件同名的 Mapper 接口**
+
+~~~ java
+package com.mdd.mapper;
+
+import com.mdd.pojo.Brand;
+
+import java.util.List;
+
+public interface BrandMapper {
+ // 方法名就是SQL映射文件中sql语句的id,并保持返回值类型一致
+ // 查询所有
+ List selectAll();
+ // 按照id查询
+ Brand selectById(Integer id);
+ // 查询id大于某个值的
+ List selectAllById(Integer id);
+}
+~~~
+
+**7. 编写测试类**
+
+~~~ java
+package com.mdd;
+
+import com.mdd.mapper.BrandMapper;
+import com.mdd.pojo.Brand;
+import org.apache.ibatis.io.Resources;
+import org.apache.ibatis.session.SqlSession;
+import org.apache.ibatis.session.SqlSessionFactoryBuilder;
+import org.junit.Test;
+
+import java.io.IOException;
+import java.util.List;
+
+public class TestBrand {
+ @Test
+ public void selectAll() throws IOException {
+ //1. 加载mybatis的核心配置文件,获取 sqlSession 对象
+ SqlSession sqlSession = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis-config.xml")).openSession();
+ //2. 获取UserMapper接口的代理对象,执行SQL语句
+ BrandMapper mapper = sqlSession.getMapper(BrandMapper.class);
+ // 查询所有
+ List brands = mapper.selectAll();
+ System.out.println(brands);
+
+ // 指定id查询
+ Brand brand = mapper.selectById(1);
+ System.out.println(brand);
+
+ // 查询id大于某个值的
+ List list = mapper.selectAllById(1);
+ System.out.println(list);
+
+ //3. 释放资源
+ sqlSession.close();
+ }
+}
+~~~
\ No newline at end of file
diff --git "a/51 \347\250\213\350\210\234/20231221.md" "b/51 \347\250\213\350\210\234/20231221.md"
new file mode 100644
index 0000000000000000000000000000000000000000..7e3fabda68cca047f250d538bb7d97af354106ff
--- /dev/null
+++ "b/51 \347\250\213\350\210\234/20231221.md"
@@ -0,0 +1,315 @@
+## Mybatis 第2版(Mapper代理方式)
+
+**可做优化:**
+
+1. 设置别名
+
+2. 参数写到专属文件,解除硬编码【写死在源代码中,而源代码有所改动,就要重新编译,测试,打包,整个流程,耦合度太高,好比把电池焊死在手机主板上了,不方便换电池,而且只能用专用品牌的电池,解耦,或解除硬编码编程方式,就好比可以随意换电池的玩具,只认型号,不认品牌,只要是5号电池就可以用。】
+
+### 总结
+
+使用Mapper代理方式,必须满足以下要求:
+
+1. 定义与SQL映射文件同名的Mapper接口,
+2. 在 Mapper 接口中定义方法,方法名就是SQL映射文件中sql语句的id,并保持参数类型和返回值类型一致
+3. 设置SQL映射文件的namespace属性为Mapper接口全限定名
+4. 核心配置文件中的mapper路径要根据sql映射文件的实际路径改变(具体文件或包扫描)
+5. 执行sql的方法改成getMapper()的方法
+
+### 例题:
+
+**1.** **创建 brand 表,添加数据**
+
+~~~ mysql
+-- 删除tb_brand表
+drop table if exists tb_brand;
+-- 创建tb_brand表
+create table tb_brand(
+ id int primary key auto_increment, -- id 主键
+ brand_name varchar(20), -- 品牌名称
+ company_name varchar(20), -- 企业名称
+ ordered int, -- 排序字段
+ description varchar(100), -- 描述信息
+ status int -- 状态:0:禁用 1:启用
+);
+-- 添加数据
+insert into tb_brand (brand_name, company_name, ordered, description, status)
+values ('三只松鼠', '三只松鼠股份有限公司', 5, '好吃不上火', 0),
+ ('华为', '华为技术有限公司', 100, '华为致力于把数字世界带入每个人、每个家庭、每个组织,构建万物互联的智能世界', 1),
+ ('小米', '小米科技有限公司', 50, 'are you ok', 1);
+
+SELECT * FROM tb_brand;
+~~~
+
+**2.** **创建模块,根据数据表,编写对应的 java 类**
+
+在 com.mdd.pojo 包下创建 User类
+
+~~~ java
+package com.mdd.pojo;
+
+/**
+ * 品牌
+ *
+ * alt + 鼠标左键:整列编辑
+ *
+ * 在实体类中,基本数据类型建议使用其对应的包装类型
+ */
+
+public class Brand {
+ // id 主键
+ private Integer id;
+ // 品牌名称
+ private String brandName;
+ // 企业名称
+ private String companyName;
+ // 排序字段
+ private Integer ordered;
+ // 描述信息
+ private String description;
+ // 状态:0:禁用 1:启用
+ private Integer status;
+
+ public Integer getId() {
+ return id;
+ }
+
+ public void setId(Integer id) {
+ this.id = id;
+ }
+
+ public String getBrandName() {
+ return brandName;
+ }
+
+ public void setBrandName(String brandName) {
+ this.brandName = brandName;
+ }
+
+ public String getCompanyName() {
+ return companyName;
+ }
+
+ public void setCompanyName(String companyName) {
+ this.companyName = companyName;
+ }
+
+ public Integer getOrdered() {
+ return ordered;
+ }
+
+ public void setOrdered(Integer ordered) {
+ this.ordered = ordered;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ @Override
+ public String toString() {
+ return "Brand{" +
+ "id=" + id +
+ ", brandName='" + brandName + '\'' +
+ ", companyName='" + companyName + '\'' +
+ ", ordered=" + ordered +
+ ", description='" + description + '\'' +
+ ", status=" + status +
+ '}';
+ }
+}
+~~~
+
+**3.** **导入坐标**
+
+在创建好的模块中的 pom.xml 配置文件中添加依赖的坐标
+
+~~~ xml
+
+
+ 4.0.0
+
+ com.mdd
+ mybatis_02
+ 1.0-SNAPSHOT
+
+
+ 17
+ 17
+ UTF-8
+
+
+
+
+
+ com.mysql
+ mysql-connector-j
+ 8.1.0
+
+
+
+ org.mybatis
+ mybatis
+ 3.5.13
+
+
+
+ junit
+ junit
+ 4.13.2
+ test
+
+
+
+
+~~~
+
+**4.** **编写 MyBatis 核心配置文件 - > 替换连接信息**
+
+在模块下的 resources 目录下创建mybatis的配置文件 mybatis-config.xml ,内容如下:
+
+~~~ xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+~~~
+
+**5. 编写 SQL 映射文件 —> 统一管理 sql 语句,在resources下创建与代理商文件路径相同**
+
+将sql映射文件(改成与mapper接口同名)移动到该目录,并将namespace属性为Mapper接口完整路径(引用)
+
+~~~ xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+~~~
+
+**6.定义与 SQL 映射文件同名的 Mapper 接口**
+
+~~~ java
+package com.mdd.mapper;
+
+import com.mdd.pojo.Brand;
+
+import java.util.List;
+
+public interface BrandMapper {
+ // 方法名就是SQL映射文件中sql语句的id,并保持返回值类型一致
+ // 查询所有
+ List selectAll();
+ // 按照id查询
+ Brand selectById(Integer id);
+ // 查询id大于某个值的
+ List selectAllById(Integer id);
+}
+~~~
+
+**7. 编写测试类**
+
+~~~ java
+package com.mdd;
+
+import com.mdd.mapper.BrandMapper;
+import com.mdd.pojo.Brand;
+import org.apache.ibatis.io.Resources;
+import org.apache.ibatis.session.SqlSession;
+import org.apache.ibatis.session.SqlSessionFactoryBuilder;
+import org.junit.Test;
+
+import java.io.IOException;
+import java.util.List;
+
+public class TestBrand {
+ @Test
+ public void selectAll() throws IOException {
+ //1. 加载mybatis的核心配置文件,获取 sqlSession 对象
+ SqlSession sqlSession = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis-config.xml")).openSession();
+ //2. 获取UserMapper接口的代理对象,执行SQL语句
+ BrandMapper mapper = sqlSession.getMapper(BrandMapper.class);
+ // 查询所有
+ List brands = mapper.selectAll();
+ System.out.println(brands);
+
+ // 指定id查询
+ Brand brand = mapper.selectById(1);
+ System.out.println(brand);
+
+ // 查询id大于某个值的
+ List list = mapper.selectAllById(1);
+ System.out.println(list);
+
+ //3. 释放资源
+ sqlSession.close();
+ }
+}
+~~~
\ No newline at end of file