From 577f7d894adc1d8d2c38f28b7bcb2881b9057ad4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=94=A1=E7=8E=AE=E9=93=AD?= <2373854303@qq.com>
Date: Mon, 23 Dec 2024 11:25:27 +0800
Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A41223=E4=BD=9C=E4=B8=9A?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
...ng\347\272\257\346\263\250\350\247\243.md" | 597 ++++++++++++++++++
.../SpringProject/.idea/.gitignore" | 8 +
.../SpringProject/.idea/compiler.xml" | 15 +
.../SpringProject/.idea/dataSources.xml" | 12 +
.../SpringProject/.idea/encodings.xml" | 7 +
.../SpringProject/.idea/jarRepositories.xml" | 25 +
.../SpringProject/.idea/misc.xml" | 15 +
.../SpringProject/.idea/uiDesigner.xml" | 124 ++++
.../SpringProject/pom.xml" | 76 +++
.../src/main/java/com/config/JdbcConfig.java" | 30 +
.../main/java/com/config/MybatisConfig.java" | 19 +
.../main/java/com/config/SpringConfig.java" | 12 +
.../com/controller/EmployeeController.java" | 39 ++
.../src/main/java/com/dao/EmployeeDao.java" | 33 +
.../src/main/java/com/entity/Employee.java" | 22 +
.../java/com/service/EmployeeService.java" | 18 +
.../com/service/EmployeeServiceImpl.java" | 39 ++
.../src/main/resources/jdbc.properties" | 4 +
.../src/test/java/com/test/TestClass.java" | 77 +++
.../classes/com/config/JdbcConfig.class" | Bin 0 -> 1280 bytes
.../classes/com/config/MybatisConfig.class" | Bin 0 -> 913 bytes
.../classes/com/config/SpringConfig.class" | Bin 0 -> 627 bytes
.../com/controller/EmployeeController.class" | Bin 0 -> 3033 bytes
.../target/classes/com/dao/EmployeeDao.class" | Bin 0 -> 1047 bytes
.../target/classes/com/entity/Employee.class" | Bin 0 -> 4310 bytes
.../com/service/EmployeeService.class" | Bin 0 -> 332 bytes
.../com/service/EmployeeServiceImpl.class" | Bin 0 -> 2723 bytes
.../target/classes/jdbc.properties" | 4 +
.../test-classes/com/test/TestClass.class" | Bin 0 -> 2124 bytes
29 files changed, 1176 insertions(+)
create mode 100644 "\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/20241223 Spring\347\272\257\346\263\250\350\247\243.md"
create mode 100644 "\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/.idea/.gitignore"
create mode 100644 "\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/.idea/compiler.xml"
create mode 100644 "\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/.idea/dataSources.xml"
create mode 100644 "\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/.idea/encodings.xml"
create mode 100644 "\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/.idea/jarRepositories.xml"
create mode 100644 "\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/.idea/misc.xml"
create mode 100644 "\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/.idea/uiDesigner.xml"
create mode 100644 "\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/pom.xml"
create mode 100644 "\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/src/main/java/com/config/JdbcConfig.java"
create mode 100644 "\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/src/main/java/com/config/MybatisConfig.java"
create mode 100644 "\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/src/main/java/com/config/SpringConfig.java"
create mode 100644 "\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/src/main/java/com/controller/EmployeeController.java"
create mode 100644 "\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/src/main/java/com/dao/EmployeeDao.java"
create mode 100644 "\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/src/main/java/com/entity/Employee.java"
create mode 100644 "\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/src/main/java/com/service/EmployeeService.java"
create mode 100644 "\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/src/main/java/com/service/EmployeeServiceImpl.java"
create mode 100644 "\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/src/main/resources/jdbc.properties"
create mode 100644 "\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/src/test/java/com/test/TestClass.java"
create mode 100644 "\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/target/classes/com/config/JdbcConfig.class"
create mode 100644 "\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/target/classes/com/config/MybatisConfig.class"
create mode 100644 "\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/target/classes/com/config/SpringConfig.class"
create mode 100644 "\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/target/classes/com/controller/EmployeeController.class"
create mode 100644 "\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/target/classes/com/dao/EmployeeDao.class"
create mode 100644 "\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/target/classes/com/entity/Employee.class"
create mode 100644 "\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/target/classes/com/service/EmployeeService.class"
create mode 100644 "\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/target/classes/com/service/EmployeeServiceImpl.class"
create mode 100644 "\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/target/classes/jdbc.properties"
create mode 100644 "\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/target/test-classes/com/test/TestClass.class"
diff --git "a/\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/20241223 Spring\347\272\257\346\263\250\350\247\243.md" "b/\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/20241223 Spring\347\272\257\346\263\250\350\247\243.md"
new file mode 100644
index 000000000..064bb73ff
--- /dev/null
+++ "b/\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/20241223 Spring\347\272\257\346\263\250\350\247\243.md"
@@ -0,0 +1,597 @@
+## 课堂笔记
+
+#### **使用 Spring 纯 注解 进行数据库的操作步骤 及 注意事项**
+
+1. ##### **准备sql数据**
+
+2. ##### **导入依赖项**
+
+3. ##### **在 controller 目录中编写 表示层**
+
+4. ##### **在 dao 目录 (Mapper) 中编写 数据处理层**
+
+5. ##### **在 service 目录中编写 业务逻辑层**
+
+6. ##### **为 Bean 创建目录 config,并编写对应的 Bean 配置类**
+
+ 1. ##### **SpringConfig 配置**
+
+ 1. 声明自己是一个配置类 @Configuration
+ 2. 扫描Bean所在的包@ComponentScan("com.pdd")
+ 3. 为了方便管理,将jdbc和mybatis的配置单独成一个子配置文件
+ 4. @ComponentScan({"com.controller","com.service","com.entity"}) 扫描包并生成对于的Bean类
+ 5. @Import({JdbcConfig.class, MyBatisConfig.class}) 将刚才创建的两个子配置文件导入进来
+
+ 2. **JdbcConfig 配置**
+
+ 1. @Component 声明自己是组件一部分
+ 2. @PropertySource("classpath:jdbc.properties") 加载外部的属性文件
+ 3. 以@Value注解,注入四个属性变量@Value("${jdbc.driver}"),@Value("${jdbc.url}") ......
+ 4. 以自定义方法的形式,返回一个DataSource的对象
+ 5. 不要忘记在这个方法上加上@Bean注解
+
+ 3. ##### **MybatisConfig 配置**
+
+ 1. @Component 声明自己是组件一部分
+ 2. @MapperScan("com.dao") 扫描daor代理接口所在的包
+ 3. 以自定义方式的形式, 返回一个SqlSessionFactoryBean的对象
+ 4. 不要忘记在这个方法上加上@Bean注解
+
+7. ##### **测试代码**
+
+ ##### **依赖注入的方式**
+
+ 1. @RunWith(SpringJUnit4ClassRunner.class) 测试类上方加这个注解
+ 2. @ContextConfiguration(classes = SpringConfig.class) 测试类上方加这个注解
+ 3. 直接将需要的对象,以属性自动装配的方式注入 @Autowired ;
+ 4. 直接使用这个注入的对象;
+
+## 课后作业
+
+#### **使用 Spring 纯 注解 进行数据库的操作**
+
+#### **项目结构预览**
+
+
+
+#### **具体步骤**
+
+##### **一、准备sql数据**
+
+```sql
+/*
+ Navicat Premium Dump SQL
+
+ Source Server : mysql
+ Source Server Type : MySQL
+ Source Server Version : 80034 (8.0.34)
+ Source Host : localhost:3306
+ Source Schema : company
+
+ Target Server Type : MySQL
+ Target Server Version : 80034 (8.0.34)
+ File Encoding : 65001
+
+ Date: 06/12/2024 10:48:27
+*/
+drop database if exists company;
+create database if not exists company;
+
+use company;
+
+SET NAMES utf8mb4;
+SET FOREIGN_KEY_CHECKS = 0;
+
+-- ----------------------------
+
+-- Table structure for dept
+
+-- ----------------------------
+
+DROP TABLE IF EXISTS `dept`;
+CREATE TABLE `dept` (
+ `deptno` int NOT NULL,
+ `dname` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
+ `loc` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
+ PRIMARY KEY (`deptno`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+
+-- Records of dept
+
+-- ----------------------------
+
+INSERT INTO `dept` VALUES (10, '教研部', '北京');
+INSERT INTO `dept` VALUES (20, '学工部', '上海');
+INSERT INTO `dept` VALUES (30, '销售部', '广州');
+INSERT INTO `dept` VALUES (40, '财务部', '武汉');
+
+-- ----------------------------
+
+-- Table structure for emp
+
+-- ----------------------------
+
+DROP TABLE IF EXISTS `emp`;
+CREATE TABLE `emp` (
+ `empno` int NOT NULL,
+ `ename` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
+ `job` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
+ `mgr` int NULL DEFAULT NULL,
+ `hiredate` date NULL DEFAULT NULL,
+ `sal` decimal(8, 2) NULL DEFAULT NULL,
+ `comm` decimal(8, 2) NULL DEFAULT NULL,
+ `deptno` int NULL DEFAULT NULL,
+ PRIMARY KEY (`empno`) USING BTREE,
+ INDEX `deptno`(`deptno` ASC) USING BTREE,
+ CONSTRAINT `emp_ibfk_1` FOREIGN KEY (`deptno`) REFERENCES `dept` (`deptno`) ON DELETE SET NULL ON UPDATE CASCADE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+
+-- Records of emp
+
+-- ----------------------------
+
+INSERT INTO `emp` VALUES (1001, '甘宁', '文员', 1013, '2000-12-17', 8000.00, NULL, 20);
+INSERT INTO `emp` VALUES (1002, '黛绮丝', '销售员', 1006, '2001-02-20', 16000.00, 3000.00, 30);
+INSERT INTO `emp` VALUES (1003, '殷天正', '销售员', 1006, '2001-02-22', 12500.00, 5000.00, 30);
+INSERT INTO `emp` VALUES (1004, '刘备', '经理', 1009, '2001-04-02', 29750.00, NULL, 20);
+INSERT INTO `emp` VALUES (1005, '谢逊', '销售员', 1006, '2001-09-28', 12500.00, 14000.00, 30);
+INSERT INTO `emp` VALUES (1006, '关羽', '经理', 1009, '2001-05-01', 28500.00, NULL, 30);
+INSERT INTO `emp` VALUES (1007, '张飞', '经理', 1009, '2001-09-01', 24500.00, NULL, 10);
+INSERT INTO `emp` VALUES (1008, '诸葛亮', '分析师', 1004, '2007-04-19', 30000.00, NULL, 20);
+INSERT INTO `emp` VALUES (1009, '曾阿牛', '董事长', NULL, '2001-11-17', 50000.00, NULL, 10);
+INSERT INTO `emp` VALUES (1010, '韦一笑', '销售员', 1006, '2001-09-08', 15000.00, 0.00, 30);
+INSERT INTO `emp` VALUES (1011, '周泰', '文员', 1008, '2007-05-23', 11000.00, NULL, 20);
+INSERT INTO `emp` VALUES (1012, '程普', '文员', 1006, '2001-12-03', 9500.00, NULL, 30);
+INSERT INTO `emp` VALUES (1013, '庞统', '分析师', 1004, '2001-12-03', 30000.00, NULL, 20);
+INSERT INTO `emp` VALUES (1014, '黄盖', '文员', 1007, '2002-01-23', 13000.00, NULL, 10);
+
+-- ----------------------------
+
+-- Table structure for salgrade
+
+-- ----------------------------
+
+DROP TABLE IF EXISTS `salgrade`;
+CREATE TABLE `salgrade` (
+ `grade` int NOT NULL,
+ `losal` int NULL DEFAULT NULL,
+ `hisal` int NULL DEFAULT NULL,
+ PRIMARY KEY (`grade`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+
+-- Records of salgrade
+
+-- ----------------------------
+
+INSERT INTO `salgrade` VALUES (1, 7000, 12000);
+INSERT INTO `salgrade` VALUES (2, 12010, 14000);
+INSERT INTO `salgrade` VALUES (3, 14010, 20000);
+INSERT INTO `salgrade` VALUES (4, 20010, 30000);
+INSERT INTO `salgrade` VALUES (5, 30010, 99990);
+
+SET FOREIGN_KEY_CHECKS = 1;
+```
+
+##### **二、导入依赖项**
+
+**pom.xml 依赖配置文件**
+
+```xml
+
+
+ 4.0.0
+
+ com.pdd
+ spring05
+ 1.0-SNAPSHOT
+
+
+
+ org.projectlombok
+ lombok
+ 1.18.36
+ compile
+
+
+
+ org.mybatis
+ mybatis
+ 3.5.16
+
+
+
+
+ com.mysql
+ mysql-connector-j
+ 8.3.0
+
+
+
+ junit
+ junit
+ 4.13.2
+ test
+
+
+
+ org.springframework
+ spring-context
+ 5.3.39
+
+
+
+
+ org.springframework
+ spring-jdbc
+ 5.3.39
+
+
+
+
+
+
+ com.alibaba
+ druid
+ 1.1.21
+
+
+
+
+
+ org.mybatis
+ mybatis-spring
+ 2.0.6
+
+
+
+
+ org.springframework
+ spring-test
+ 5.3.39
+
+
+
+```
+
+##### **三、在 controller 目录中编写 表示层**
+
+**EmployeeController 类**
+
+```java
+package com.controller;
+
+import com.entity.Employee;
+import com.service.EmployeeService;
+import lombok.Data;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+
+@Data
+@Controller // 标识这是一个 bean
+public class EmployeeController {
+ // 表示层
+ @Autowired // 自动装配
+ private EmployeeService employeeService; // 依赖接口
+
+ // 按 id 查询一个员工
+ public Employee selectOneEmployee(int id) {
+ Employee employee = employeeService.selectEmployeeById(id);
+ return employee;
+ }
+
+ // 新增一个员工
+ public String insertOneEmployee(Employee employee) {
+ Boolean aBoolean = employeeService.insertEmployee(employee);
+ return aBoolean ? "新增成功" : "新增失败";
+ }
+
+ // 修改一个员工
+ public String updateOneEmployee(Employee employee) {
+ Boolean aBoolean = employeeService.updateEmployeeById(employee);
+ return aBoolean ? "修改成功" : "修改失败";
+ }
+
+ // 按 id 删除一个员工
+ public String deleteOneEmployee(int id) {
+ Boolean aBoolean = employeeService.deleteEmployeeById(id);
+ return aBoolean? "删除成功" : "删除失败";
+ }
+}
+```
+
+##### **四、在 dao 目录 (Mapper) 中编写 数据处理层**
+
+**EmployeeDao 接口**
+
+```java
+package com.dao;
+
+import com.entity.Employee;
+import org.apache.ibatis.annotations.*;
+
+@Mapper
+public interface EmployeeDao {
+ // 数据处理层
+
+ // 搜索员工方法
+ @Select("select * from emp where empno = #{id}")
+ Employee selectEmployeeById(int id);
+
+ // 新增员工方法
+ @Insert("INSERT INTO `emp` VALUES (#{empno},#{ename}, #{job}, #{mgr}, #{hiredate},#{sal}, #{comm}, #{deptno});")
+ int insertEmployee(Employee employee);
+
+ // 修改员工方法
+ @Update("update `emp`\n" +
+ " set ename = #{ename},\n" +
+ " job=#{job},\n" +
+ " mgr=#{mgr},\n" +
+ " hiredate=#{hiredate},\n" +
+ " sal=#{sal},\n" +
+ " comm= #{comm},\n" +
+ " deptno = #{deptno}\n" +
+ " where empno = #{empno};")
+ int updateEmployeeById(Employee employee);
+
+ // 删除员工方法
+ @Delete("delete from emp where empno = #{empno};")
+ int deleteEmployeeById(int id);
+}
+```
+
+##### **五、在 service 目录中编写 业务逻辑层**
+
+**EmployeeService 接口**
+
+```java
+package com.service;
+
+import com.entity.Employee;
+
+public interface EmployeeService {
+ // 业务逻辑层
+ // 加工搜索员工方法
+ Employee selectEmployeeById(int id);
+
+ // 加工新增员工方法
+ Boolean insertEmployee(Employee employee);
+
+ // 加工删除员工方法
+ Boolean deleteEmployeeById(int id);
+
+ // 加工修改员工方法
+ Boolean updateEmployeeById(Employee employee);
+}
+```
+
+**EmployeeServiceImpl 实现类**
+
+```java
+package com.service;
+
+import com.dao.EmployeeDao;
+import com.entity.Employee;
+import lombok.Data;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Data
+@Service
+public class EmployeeServiceImpl implements EmployeeService {
+ @Autowired // 自动装配
+ private EmployeeDao employeeDao; // 依赖接口
+
+ @Override
+ public Employee selectEmployeeById(int id) {
+ Employee employee = employeeDao.selectEmployeeById(id);
+ return employee;
+ }
+
+ @Override
+ public Boolean insertEmployee(Employee employee) {
+ int i = employeeDao.insertEmployee(employee);
+ return i > 0;
+ }
+
+ @Override
+ public Boolean deleteEmployeeById(int id) {
+ int i = employeeDao.deleteEmployeeById(id);
+ return i > 0;
+ }
+
+ @Override
+ public Boolean updateEmployeeById(Employee employee) {
+ int i = employeeDao.updateEmployeeById(employee);
+ return i > 0;
+ }
+
+}
+```
+
+##### **六、为 Bean 创建目录 config,**
+
+
+
+**SpringConfig 配置类**
+
+```java
+package com.config;
+
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Import;
+
+@Configuration // 声明自己是一个配置类
+@ComponentScan({"com.controller","com.service","com.entity"}) // 扫描 Bean 所在的包
+@Import({JdbcConfig.class, MybatisConfig.class}) // 导入两个Bean 配置文件
+public class SpringConfig {
+
+}
+```
+
+**JdbcConfig 配置类**
+
+```java
+package com.config;
+
+import com.alibaba.druid.pool.DruidDataSource;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.PropertySource;
+import org.springframework.stereotype.Component;
+
+@Component // 声明自己是组件在一部分
+@PropertySource("classpath:jdbc.properties") // 加载外部的属性文件
+public class JdbcConfig {
+ @Value("${jdbc.driver}")
+ private String driverClassName;
+ @Value("${jdbc.url}")
+ private String url;
+ @Value("${jdbc.username}")
+ private String username;
+ @Value("${jdbc.password}")
+ private String password;
+
+ @Bean
+ public DruidDataSource getDruidDataSource(){
+ DruidDataSource dataSource = new DruidDataSource();
+ dataSource.setDriverClassName(driverClassName);
+ dataSource.setUrl(url);
+ dataSource.setUsername(username);
+ dataSource.setPassword(password);
+ return dataSource;
+ }
+}
+```
+
+**MybatisConfig 配置类**
+
+```java
+package com.config;
+
+import org.mybatis.spring.SqlSessionFactoryBean;
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.context.annotation.Bean;
+import org.springframework.stereotype.Component;
+
+import javax.sql.DataSource;
+
+@Component // 声明自己是组件在一部分
+@MapperScan("com.dao") // 扫描 dao 代理接口所在的包
+public class MybatisConfig {
+ @Bean
+ public SqlSessionFactoryBean getSqlSessionFactoryBean(DataSource dataSource){
+ SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
+ sqlSessionFactoryBean.setDataSource(dataSource);
+ return sqlSessionFactoryBean;
+ }
+}
+```
+
+##### **七、测试代码**
+
+**TestClass 测试类**
+
+```java
+package com.test;
+
+
+import com.config.SpringConfig;
+import com.controller.EmployeeController;
+import com.entity.Employee;
+import org.junit.Test;
+
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration(classes = SpringConfig.class)
+public class TestClass {
+ // 通用员工对象
+ @Autowired // 自动装配
+ private Employee employee;
+
+ @Autowired // 自动装配
+ private EmployeeController employeeController;
+
+ // 查询员工
+ @Test
+ public void T1() {
+ // 获取员工
+ Employee employee = employeeController.selectOneEmployee(1001);
+ System.out.println(employee);
+ }
+
+ // 新增员工
+ @Test
+ public void T2() {
+ // 新增员工
+ Employee emp = employee;
+ // 从容器中拿用户对象 并创建 员工对象 给数据库
+ emp.setEmpno(1050);
+ emp.setEname("陈俊杰");
+ emp.setJob("程序员");
+ emp.setMgr(1001);
+ emp.setHiredate("2024-12-19");
+ emp.setSal(6000.00);
+ emp.setComm(0);
+ emp.setDeptno(10);
+
+ String msg = employeeController.insertOneEmployee(emp);
+ System.out.println(msg);
+ }
+
+ // 修改员工
+ @Test
+ public void T3() {
+ // 新增员工
+ Employee emp = employee;
+ // 从容器中拿用户对象 并创建 员工对象 给数据库
+ emp.setEmpno(1050);
+ emp.setEname("陈俊杰");
+ emp.setJob("程序猿");
+ emp.setMgr(1001);
+ emp.setHiredate("2024-12-19");
+ emp.setSal(6000.00);
+ emp.setComm(0);
+ emp.setDeptno(10);
+
+ String msg = employeeController.updateOneEmployee(emp);
+ System.out.println(msg);
+ }
+
+ // 删除员工
+ @Test
+ public void T4() {
+ // 删除员工
+ String msg = employeeController.deleteOneEmployee(1050);
+ System.out.println(msg);
+ }
+}
+```
+
+查询员工
+
+
+
+新增员工
+
+
+
+修改员工
+
+
+
+删除员工
+
+
diff --git "a/\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/.idea/.gitignore" "b/\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/.idea/.gitignore"
new file mode 100644
index 000000000..35410cacd
--- /dev/null
+++ "b/\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/.idea/.gitignore"
@@ -0,0 +1,8 @@
+# 默认忽略的文件
+/shelf/
+/workspace.xml
+# 基于编辑器的 HTTP 客户端请求
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git "a/\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/.idea/compiler.xml" "b/\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/.idea/compiler.xml"
new file mode 100644
index 000000000..2c65d972d
--- /dev/null
+++ "b/\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/.idea/compiler.xml"
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git "a/\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/.idea/dataSources.xml" "b/\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/.idea/dataSources.xml"
new file mode 100644
index 000000000..4af22f86f
--- /dev/null
+++ "b/\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/.idea/dataSources.xml"
@@ -0,0 +1,12 @@
+
+
+
+
+ mysql.8
+ true
+ com.mysql.cj.jdbc.Driver
+ jdbc:mysql://localhost:3306
+ $ProjectFileDir$
+
+
+
\ No newline at end of file
diff --git "a/\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/.idea/encodings.xml" "b/\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/.idea/encodings.xml"
new file mode 100644
index 000000000..aa00ffab7
--- /dev/null
+++ "b/\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/.idea/encodings.xml"
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git "a/\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/.idea/jarRepositories.xml" "b/\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/.idea/jarRepositories.xml"
new file mode 100644
index 000000000..c7ea92037
--- /dev/null
+++ "b/\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/.idea/jarRepositories.xml"
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git "a/\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/.idea/misc.xml" "b/\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/.idea/misc.xml"
new file mode 100644
index 000000000..5d8d5c075
--- /dev/null
+++ "b/\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/.idea/misc.xml"
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git "a/\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/.idea/uiDesigner.xml" "b/\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/.idea/uiDesigner.xml"
new file mode 100644
index 000000000..2b63946d5
--- /dev/null
+++ "b/\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/.idea/uiDesigner.xml"
@@ -0,0 +1,124 @@
+
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+
\ No newline at end of file
diff --git "a/\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/pom.xml" "b/\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/pom.xml"
new file mode 100644
index 000000000..fa4edefc7
--- /dev/null
+++ "b/\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/pom.xml"
@@ -0,0 +1,76 @@
+
+
+ 4.0.0
+
+ com.pdd
+ spring05
+ 1.0-SNAPSHOT
+
+
+
+ org.projectlombok
+ lombok
+ 1.18.36
+ compile
+
+
+
+ org.mybatis
+ mybatis
+ 3.5.16
+
+
+
+
+ com.mysql
+ mysql-connector-j
+ 8.3.0
+
+
+
+ junit
+ junit
+ 4.13.2
+ test
+
+
+
+ org.springframework
+ spring-context
+ 5.3.39
+
+
+
+
+ org.springframework
+ spring-jdbc
+ 5.3.39
+
+
+
+
+
+
+ com.alibaba
+ druid
+ 1.1.21
+
+
+
+
+
+ org.mybatis
+ mybatis-spring
+ 2.0.6
+
+
+
+
+ org.springframework
+ spring-test
+ 5.3.39
+
+
+
\ No newline at end of file
diff --git "a/\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/src/main/java/com/config/JdbcConfig.java" "b/\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/src/main/java/com/config/JdbcConfig.java"
new file mode 100644
index 000000000..45953b6ed
--- /dev/null
+++ "b/\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/src/main/java/com/config/JdbcConfig.java"
@@ -0,0 +1,30 @@
+package com.config;
+
+import com.alibaba.druid.pool.DruidDataSource;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.PropertySource;
+import org.springframework.stereotype.Component;
+
+@Component // 声明自己是组件在一部分
+@PropertySource("classpath:jdbc.properties") // 加载外部的属性文件
+public class JdbcConfig {
+ @Value("${jdbc.driver}")
+ private String driverClassName;
+ @Value("${jdbc.url}")
+ private String url;
+ @Value("${jdbc.username}")
+ private String username;
+ @Value("${jdbc.password}")
+ private String password;
+
+ @Bean
+ public DruidDataSource getDruidDataSource(){
+ DruidDataSource dataSource = new DruidDataSource();
+ dataSource.setDriverClassName(driverClassName);
+ dataSource.setUrl(url);
+ dataSource.setUsername(username);
+ dataSource.setPassword(password);
+ return dataSource;
+ }
+}
diff --git "a/\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/src/main/java/com/config/MybatisConfig.java" "b/\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/src/main/java/com/config/MybatisConfig.java"
new file mode 100644
index 000000000..1059ab466
--- /dev/null
+++ "b/\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/src/main/java/com/config/MybatisConfig.java"
@@ -0,0 +1,19 @@
+package com.config;
+
+import org.mybatis.spring.SqlSessionFactoryBean;
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.context.annotation.Bean;
+import org.springframework.stereotype.Component;
+
+import javax.sql.DataSource;
+
+@Component // 声明自己是组件在一部分
+@MapperScan("com.dao") // 扫描 dao 代理接口所在的包
+public class MybatisConfig {
+ @Bean
+ public SqlSessionFactoryBean getSqlSessionFactoryBean(DataSource dataSource){
+ SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
+ sqlSessionFactoryBean.setDataSource(dataSource);
+ return sqlSessionFactoryBean;
+ }
+}
diff --git "a/\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/src/main/java/com/config/SpringConfig.java" "b/\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/src/main/java/com/config/SpringConfig.java"
new file mode 100644
index 000000000..cec7a6fae
--- /dev/null
+++ "b/\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/src/main/java/com/config/SpringConfig.java"
@@ -0,0 +1,12 @@
+package com.config;
+
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Import;
+
+@Configuration // 声明自己是一个配置类
+@ComponentScan({"com.controller","com.service","com.entity"}) // 扫描 Bean 所在的包
+@Import({JdbcConfig.class, MybatisConfig.class}) // 导入两个Bean 配置文件
+public class SpringConfig {
+
+}
diff --git "a/\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/src/main/java/com/controller/EmployeeController.java" "b/\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/src/main/java/com/controller/EmployeeController.java"
new file mode 100644
index 000000000..bea41e22b
--- /dev/null
+++ "b/\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/src/main/java/com/controller/EmployeeController.java"
@@ -0,0 +1,39 @@
+package com.controller;
+
+import com.entity.Employee;
+import com.service.EmployeeService;
+import lombok.Data;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+
+@Data
+@Controller // 标识这是一个 bean
+public class EmployeeController {
+ // 表示层
+ @Autowired // 自动装配
+ private EmployeeService employeeService; // 依赖接口
+
+ // 按 id 查询一个员工
+ public Employee selectOneEmployee(int id) {
+ Employee employee = employeeService.selectEmployeeById(id);
+ return employee;
+ }
+
+ // 新增一个员工
+ public String insertOneEmployee(Employee employee) {
+ Boolean aBoolean = employeeService.insertEmployee(employee);
+ return aBoolean ? "新增成功" : "新增失败";
+ }
+
+ // 修改一个员工
+ public String updateOneEmployee(Employee employee) {
+ Boolean aBoolean = employeeService.updateEmployeeById(employee);
+ return aBoolean ? "修改成功" : "修改失败";
+ }
+
+ // 按 id 删除一个员工
+ public String deleteOneEmployee(int id) {
+ Boolean aBoolean = employeeService.deleteEmployeeById(id);
+ return aBoolean? "删除成功" : "删除失败";
+ }
+}
diff --git "a/\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/src/main/java/com/dao/EmployeeDao.java" "b/\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/src/main/java/com/dao/EmployeeDao.java"
new file mode 100644
index 000000000..83068a078
--- /dev/null
+++ "b/\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/src/main/java/com/dao/EmployeeDao.java"
@@ -0,0 +1,33 @@
+package com.dao;
+
+import com.entity.Employee;
+import org.apache.ibatis.annotations.*;
+
+@Mapper
+public interface EmployeeDao {
+ // 数据处理层
+
+ // 搜索员工方法
+ @Select("select * from emp where empno = #{id}")
+ Employee selectEmployeeById(int id);
+
+ // 新增员工方法
+ @Insert("INSERT INTO `emp` VALUES (#{empno},#{ename}, #{job}, #{mgr}, #{hiredate},#{sal}, #{comm}, #{deptno});")
+ int insertEmployee(Employee employee);
+
+ // 修改员工方法
+ @Update("update `emp`\n" +
+ " set ename = #{ename},\n" +
+ " job=#{job},\n" +
+ " mgr=#{mgr},\n" +
+ " hiredate=#{hiredate},\n" +
+ " sal=#{sal},\n" +
+ " comm= #{comm},\n" +
+ " deptno = #{deptno}\n" +
+ " where empno = #{empno};")
+ int updateEmployeeById(Employee employee);
+
+ // 删除员工方法
+ @Delete("delete from emp where empno = #{empno};")
+ int deleteEmployeeById(int id);
+}
diff --git "a/\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/src/main/java/com/entity/Employee.java" "b/\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/src/main/java/com/entity/Employee.java"
new file mode 100644
index 000000000..7d2ab9e40
--- /dev/null
+++ "b/\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/src/main/java/com/entity/Employee.java"
@@ -0,0 +1,22 @@
+package com.entity;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springframework.stereotype.Component;
+
+/* 员工实体类 */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Component // 声明自己是组件在一部分
+public class Employee {
+ private int empno;
+ private String ename;
+ private String job;
+ private int mgr;
+ private String hiredate;
+ private double sal;
+ private double comm;
+ private int deptno;
+}
diff --git "a/\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/src/main/java/com/service/EmployeeService.java" "b/\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/src/main/java/com/service/EmployeeService.java"
new file mode 100644
index 000000000..d91fc77fe
--- /dev/null
+++ "b/\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/src/main/java/com/service/EmployeeService.java"
@@ -0,0 +1,18 @@
+package com.service;
+
+import com.entity.Employee;
+
+public interface EmployeeService {
+ // 业务逻辑层
+ // 加工搜索员工方法
+ Employee selectEmployeeById(int id);
+
+ // 加工新增员工方法
+ Boolean insertEmployee(Employee employee);
+
+ // 加工删除员工方法
+ Boolean deleteEmployeeById(int id);
+
+ // 加工修改员工方法
+ Boolean updateEmployeeById(Employee employee);
+}
diff --git "a/\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/src/main/java/com/service/EmployeeServiceImpl.java" "b/\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/src/main/java/com/service/EmployeeServiceImpl.java"
new file mode 100644
index 000000000..5b801c62d
--- /dev/null
+++ "b/\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/src/main/java/com/service/EmployeeServiceImpl.java"
@@ -0,0 +1,39 @@
+package com.service;
+
+import com.dao.EmployeeDao;
+import com.entity.Employee;
+import lombok.Data;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Data
+@Service
+public class EmployeeServiceImpl implements EmployeeService {
+ @Autowired // 自动装配
+ private EmployeeDao employeeDao; // 依赖接口
+
+ @Override
+ public Employee selectEmployeeById(int id) {
+ Employee employee = employeeDao.selectEmployeeById(id);
+ return employee;
+ }
+
+ @Override
+ public Boolean insertEmployee(Employee employee) {
+ int i = employeeDao.insertEmployee(employee);
+ return i > 0;
+ }
+
+ @Override
+ public Boolean deleteEmployeeById(int id) {
+ int i = employeeDao.deleteEmployeeById(id);
+ return i > 0;
+ }
+
+ @Override
+ public Boolean updateEmployeeById(Employee employee) {
+ int i = employeeDao.updateEmployeeById(employee);
+ return i > 0;
+ }
+
+}
diff --git "a/\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/src/main/resources/jdbc.properties" "b/\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/src/main/resources/jdbc.properties"
new file mode 100644
index 000000000..f4751e97a
--- /dev/null
+++ "b/\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/src/main/resources/jdbc.properties"
@@ -0,0 +1,4 @@
+jdbc.driver = com.mysql.cj.jdbc.Driver
+jdbc.url = jdbc:mysql:///company
+jdbc.username = root
+jdbc.password = 123456
\ No newline at end of file
diff --git "a/\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/src/test/java/com/test/TestClass.java" "b/\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/src/test/java/com/test/TestClass.java"
new file mode 100644
index 000000000..1b2e5d08f
--- /dev/null
+++ "b/\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/src/test/java/com/test/TestClass.java"
@@ -0,0 +1,77 @@
+package com.test;
+
+
+import com.config.SpringConfig;
+import com.controller.EmployeeController;
+import com.entity.Employee;
+import org.junit.Test;
+
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration(classes = SpringConfig.class)
+public class TestClass {
+ // 通用员工对象
+ @Autowired // 自动装配
+ private Employee employee;
+
+ @Autowired // 自动装配
+ private EmployeeController employeeController;
+
+ // 查询员工
+ @Test
+ public void T1() {
+ // 获取员工
+ Employee employee = employeeController.selectOneEmployee(1001);
+ System.out.println(employee);
+ }
+
+ // 新增员工
+ @Test
+ public void T2() {
+ // 新增员工
+ Employee emp = employee;
+ // 从容器中拿用户对象 并创建 员工对象 给数据库
+ emp.setEmpno(1050);
+ emp.setEname("陈俊杰");
+ emp.setJob("程序员");
+ emp.setMgr(1001);
+ emp.setHiredate("2024-12-19");
+ emp.setSal(6000.00);
+ emp.setComm(0);
+ emp.setDeptno(10);
+
+ String msg = employeeController.insertOneEmployee(emp);
+ System.out.println(msg);
+ }
+
+ // 修改员工
+ @Test
+ public void T3() {
+ // 新增员工
+ Employee emp = employee;
+ // 从容器中拿用户对象 并创建 员工对象 给数据库
+ emp.setEmpno(1050);
+ emp.setEname("陈俊杰");
+ emp.setJob("程序猿");
+ emp.setMgr(1001);
+ emp.setHiredate("2024-12-19");
+ emp.setSal(6000.00);
+ emp.setComm(0);
+ emp.setDeptno(10);
+
+ String msg = employeeController.updateOneEmployee(emp);
+ System.out.println(msg);
+ }
+
+ // 删除员工
+ @Test
+ public void T4() {
+ // 删除员工
+ String msg = employeeController.deleteOneEmployee(1050);
+ System.out.println(msg);
+ }
+}
\ No newline at end of file
diff --git "a/\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/target/classes/com/config/JdbcConfig.class" "b/\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/target/classes/com/config/JdbcConfig.class"
new file mode 100644
index 0000000000000000000000000000000000000000..66be7bcda4a41b4d8cea8b4b5fc2dcc2afc840ef
GIT binary patch
literal 1280
zcma)5ZBG+H5S}ZgEp4G#1uXb3Vrhj_L_r`XTH*)OAQ5e1{ItC;W$}7<+1sMT_@6W}
zCDFtm;Eyssb1g5SP4vUvJoEa@?9TrF^Wzs0Ezw4rMyZ^ndufVMd4#gGz-W&FDU(
z2aJ{&J!G_;q(@15Y*DVE)q&I%SA^k~Xi1Cm)qQawY*%ds=fkuMevwY6(ere}r%TdEyO?M3~KA3J&$_6F!4tPP8fy~h@K6C27?<|zsn
z=W7b7cZ3L|#>wsugeRGg0zgsbYJF6;&e*n#i6_PJP8NH@-87XLqQVc@x=MSHV2p?p`P!Hg`J2BHuT99#}3kQcK?)2GXwht-$xBXHaWpVDJF$ZS4nAo5L;Gx-3;6OOU4#Se_d6!wz%>1iDL61(zoP($#b=2B6|mTl7UXd0h^%h_F}jL>A~I&^
z8gRB7K-cL8Gz;zCLKG)!$QWelC&k_!(NMKq`cCl<4YN#iD9JL_p%Iqp4rR(;5#42&
z1_#j;rO@X%74V-%{TV8vGP6#0EB9Da;Ji(fgc5Ph33hmbaHprt7V3S81sx)RqSBpTF{0}_Eqh||W|hAsB4Yi~;Pui!!@
zkoW=oD8%f#Dj!NE@L|R?<9Rdlp1=S2@(sWv+;5n+GALoNIN)=2Qtr<(FY>3CY$X`p&9nO;gL8Ir#wH7`7>d~z)Z79?rnu8oA9In
z;(3}WJ>hdP2){ADXk=KO56G}WBj&BJ{Xe5RFQ?k7L=IK1h=iwF8%wtuO&mP*K*g?y
znMmXZlf8GGSb1u>xcHR2)7{#|tq01J`v+;ejueJswZ9Q_D>G^AES0=xlGJFaEy2yb
zmM1FSlM8s3lG$7e_$HFubpw7_!SJs=ji+iN(WvVkQxf6ISNVgZGBNO)_k&wtMuM1J|Mq95yK){
z1mc=slP{BReMRZb8Or^g2cJ>d`ADe}9L!=-rfEymyzJpN&vOMFHB)VwVC%G18`r4w
cI(51QRy@wCw>NyYP1QAuJ5*hN3zp;NPuHC8_W%F@
literal 0
HcmV?d00001
diff --git "a/\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/target/classes/com/config/SpringConfig.class" "b/\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/target/classes/com/config/SpringConfig.class"
new file mode 100644
index 0000000000000000000000000000000000000000..01d03fa50569fe43b135d008040c12bff6332880
GIT binary patch
literal 627
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
literal 0
HcmV?d00001
diff --git "a/\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/target/classes/com/service/EmployeeService.class" "b/\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/target/classes/com/service/EmployeeService.class"
new file mode 100644
index 0000000000000000000000000000000000000000..724ba0ea6c4e349a8e37ffb5ca66c84ccb85813c
GIT binary patch
literal 332
zcmZvYO$x#=5QX1pwf-X_B6tCHVZp6CL7^bH@C30Pq!OFbAE8%s;Q>69n5b0{H<@Je
z<-Iq#-7i-Fb98L9Y_tizge80F>J&+pGcR-3Ck)5#WaFum!(kevxl`OO2%R8IIR5a2
z>G&@>*&M}LI8uZMXQ`BA5$e}HU%RDT=)K$q#_cbiMZWl@8#|T79_%OaFv=?$TR>a*IYJ!{>ZHQCT>3C#!m
C=3EE>
literal 0
HcmV?d00001
diff --git "a/\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/target/classes/com/service/EmployeeServiceImpl.class" "b/\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/target/classes/com/service/EmployeeServiceImpl.class"
new file mode 100644
index 0000000000000000000000000000000000000000..c064903761870931610552658e51b28ed804941b
GIT binary patch
literal 2723
zcmah}-*XdH7(F-HWJ9_sZJ=!`g@T}_NlO$_fl`E)g3**B#VYs%w#lVkNO$9AQ>Oog
z&p!AlFFe4E7SS0;Uv$R53B_}FH_6hbz?A#lz4`9>ew_2&fByURcK|1_x(6wI)Q2)Y
zR?8=8RIs3SSJbkY#(rGY@oAb~*VMA4POhuvGabumWN$@|^pYD{F+!Hf3E_y>_hG&2mj3
zmoHEFX-J0jHanTnUz>AkQebbzvgMW5`igX~n@op56{l*}mrd7F-{GO=ty#?Ph!573
z?uJ#B9kiw3yUa2P9J3f$lm$}lcC>r3Gl_o7CRitFfkM7#x)YVV=7w3SoAzpH)^X}=
z2qOtgAhYC|)q4wOqn&+?ZSdraZ5UQ<=!KANHEQN|@8ns_w!Cu!@%+THz=4pjvc1uR
zv23O8tgkrtN|&WAU1BLN`d4MACSMC9`GAI(-Sw@5XvsQ^Cy9XOy;feBXG*SYw(6dM5k=qy&sp-6iUszw_HOTkQ}!sm3EwBSqiUA8yLojj&BUSh64uPz%3oO4VYLlFoCLpB5oOFW6enoJ6B
zHx(P0!FvYY#ybX1s@*w!C@`|UirJP`uc@{k?vZ{z(&ZTgHAuDGAxRSk=5Uc@bnyZX
zskN6RCa|x^gQ8}<_sEc?!ES_bY6SERv)+=6Ok_BJGs;YNt~8DdZzs)0L)skXsi@pS
z0;4yBqp%yK_67g8Ja=fI?T;gTYWIVx=Kq)?kv7K%J4riA+eb@ExsLH`kv?(SOyMVp
z15Xi)VPWzS4`MjTHBAc)@=_LuxH}v;W1KtnFT-%J6RMAXM{$g+pj6%r!Poe$z;g<`
z_!RLNX2yPiu04Pj{{@emvjP$Rhmh*Wj?4}dbS1Ui9tL!dLXN;Anq@n?wMDGdi69d?tU
zOkYfnPeq9Nh&DmYxnki*B(#UcKau(#iTK0fA4n}s7Phd*|KuipWs=JoZR&6IjcR{k
z@BxgeQEdx-zK8aZFoEQvJvte{cM_Vz`}lzU8NzX#qSRv~WE`h?7N^WcafUn1m*5bR
zdg>Yabxi+@VI61rmlC|zZL_AHzp#?i1XbNhs1j5zJNXKllj!7f$23iAT>~Y0DWo;#_gH0-h~%}t6{J>HFe&f=LDaK3;vv?*@RiY
za5Zs95qr)TMPs=_uv7@~oIUA&$Hewb`8bD}UZPdH9QzHK8&A-m-MfVWmGBk@vsv!9
auy4Ecq8c6x(~Nc^hIzk>mpX6UW#E6p$`5`3
literal 0
HcmV?d00001
diff --git "a/\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/target/classes/jdbc.properties" "b/\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/target/classes/jdbc.properties"
new file mode 100644
index 000000000..f4751e97a
--- /dev/null
+++ "b/\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/target/classes/jdbc.properties"
@@ -0,0 +1,4 @@
+jdbc.driver = com.mysql.cj.jdbc.Driver
+jdbc.url = jdbc:mysql:///company
+jdbc.username = root
+jdbc.password = 123456
\ No newline at end of file
diff --git "a/\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/target/test-classes/com/test/TestClass.class" "b/\350\224\241\347\216\256\351\223\255/20241223 Spring\347\272\257\346\263\250\350\247\243/SpringProject/target/test-classes/com/test/TestClass.class"
new file mode 100644
index 0000000000000000000000000000000000000000..9587b97f940705155f65e95cb118a325e1d2e185
GIT binary patch
literal 2124
zcmbVM-*XdH6#h2-ksn=4leW-SR1nmrX;~VorL;gx3Y3ykB&DdRxJhr*Et}oW?gs3C
z;HWc>Z~EZ7kIFbLd+*tEzVm(Oo|`}Ze)2njESv;}
za5j!XOeJs*({aq;d;%A6QGBxr%;8cDIa%jpxGd`xF;`<)ko8*U?BgvW0diUtb6rec
z(3S+~MhwexxGCntC~iej&=6CVE!*8zN<)9Xyj1Xi$ZTyD6hH4NUW(pOQdmTwhp
zHRm{PUBH`dKk;CkDJ*-S9zs)75^^3)n(
zQ#+M&t`m5!Z7Wa1iI797>1pz41u?aA#&WFSf`+!?^s0vToV!N;hw_%AZd5Bp<*k?`
z$`X0EWZJ8yXUVzYY!5apGVcp31rDI0}A^oLPr1Y$x%qTp7&lDc9EkM3rLQ<9`%XjcKR>Nv_X*yKA_utAWH
z2c}(R*4%-;4H-*=)R%z~Qk*afVgDCzlkY?*gkZ!Z*5rRv#*tqFB*!8>>;=(eV*Jj^Yy?ck!u?*Kst8&vbl_dm7>|
ze*Egsr(gf|(=R%{02>j1{_{7_o_zQ0`yX@^Vd^MJSR#8mJ25t%9UGt0u_kVXbsc3f
z8@Q*#!luBt0G@yQRL6bs+NkhyWRmyZEpN4TVavr$RSGm5mpEx=ef|!ZHVsK%*$iHG
z)XtmGFfe>A{gT(Rt4d+p4;0z7xmDKcuMdpn8aFvD0cS>;6*jszq_x-0_REz9w!^&P
zU6WQPJ}pztx#H=yLq)0NWG-x_{!VcsPyoGZA$Nw)OXww-)9BeaLyeq}93UZ!P|TBfMw9JNeS%M7)gC+7>~
zb&>36spS%Fj#}pbmlmU`W$ysUtqe2u;jl7K$_MXUTIo{?G`&8
Xw(