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 纯 注解 进行数据库的操作** + +#### **项目结构预览** + +![image-20241223103750551](https://gitee.com/hyo-ja/picture-warehouse/raw/master/images/upgit_20241223_1734921470.png) + +#### **具体步骤** + +##### **一、准备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,** + +![image-20241223110020108](https://gitee.com/hyo-ja/picture-warehouse/raw/master/images/upgit_20241223_1734922820.png) + +**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); + } +} +``` + +查询员工 + +![image-20241223104225215](https://gitee.com/hyo-ja/picture-warehouse/raw/master/images/upgit_20241223_1734921745.png) + +新增员工 + +![image-20241223104243896](https://gitee.com/hyo-ja/picture-warehouse/raw/master/images/upgit_20241223_1734921764.png) + +修改员工 + +![image-20241223104300315](https://gitee.com/hyo-ja/picture-warehouse/raw/master/images/upgit_20241223_1734921780.png) + +删除员工 + +![image-20241223104317719](https://gitee.com/hyo-ja/picture-warehouse/raw/master/images/upgit_20241223_1734921797.png) 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-Wds=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 zcmb7B%Sr<=6g}xvYqhPfYIm-DEDX4CqX;4hN>#AZjjK!=Yjh@&Os48*xe{FX0e+Nt zGZpDZ&>6Uyb8gN#$(@hSw|4+L=+sa|yNZ=6Rv9Y$+Gu~kP~6z;Gn9_(KruAB+Nkp^ ziIlq%QB2Hy*Gduhh0_6llO=zvQ-;;9v*JIsP$~-q&n8Yq&3;x zz7r!s;>*lRj@Ab4X7Ep#f*=@ixw?VY&|I@Q#KV4ezS`dm7GbxS*ErYxqFJhjr+{#W+5yQo81vQ&-ToGuLOS!DQBIUGnmd%V5*fo){m(qD}n;zTvc}SrB zY{7EPB{^f}&DpFRwk+E%SycO?jh=8;i*j=?rgn3gPk)1IdQ|45!j(5u(y=aAmn86bM-mPsaPFa#<0eeXJ%@_$S-)JBWYAe^vv1u z$uWlJ$b2E|3N%%t@RDnLsiuE&Qw}c>K;5)ma5D0wskGZxVzjKs1L}@Is%By3UFk^M zUCGIG`NoirPISewq{Bjw4jVbjM#oi<1^wY?chz{lXY}aqy{p;R0I`YWz z?9ZRSd-&;tz{J~@Ok5ObvVQ%mzi-|OOuTK$?^Wj3YXZsntoG zA_dhPjTFr6oJwHtW^($f(n*kITvNlxR7Agyw=luHlp#G;uzt!%LH$*jm2%ekgic7g zc^#`1*2u~@`$mJ;5K4yv15fV;2jLWDC>-g+^&7ykajwdVUgKwQoFZ-B|8r z+?bKeNsHkPR+f)1!p*w$IcJ$~urHO{CLNdTv4=lD9sC(%6ICMQyoIgkTTO8@(IG(517q;{rukfuY-`lEv?YX5d1Xa- zKn+g?I*K75=qP8UqS!#{dx+X0wR#powqw3cyCnWJ^@!_fhdl7n!HbnSbA^21X@tB;H_aRXo zDSr?ANKbNBy6pN9E$8oJMfgc5S=Y)0|DBS^3mQ_ih!nyYKbfAp{PN!6k4fid*RYeJS2{6uVp($QRF|y zfgjL+(?5WCyG~49fr2G#cjwK_dow$G`|HO~BKkmkb$U~$T|v#110H7GFb?#L`P0nx z1nus-?cPv_4o8`v&739rQPAG`6tlnOQ<<-$RM5MgPDYN3)o{#?KY%%P z)E@_@Z>f-E{YC{-7WB3tmk07&qC?4HEWeLAVY7?0Jd&-s@8yCv{V3(66lnzhRbJa& zEyA^_AcEb~e)s%Bx~CUs@*0fS^6I#E+3m~y*4zrnJJ>`jWUruVYgLO?8|xpF1LB7;(;mw+FC1iQ?*f1R9}ILJ`^GsJt^^rS6%enbj-t` zJnUEvGx;CadtyV85oZqgk zI?apa)v8+0T`N~Fm75hA2TI-Bth6+wmk3*M>R!dWULai6z3w>N&e03o)YY8D`n5`{ z!p|P4*IlpdRoptiN-b60+N!%%c*vT6ZpQsJ_9*$?H2l*J|md}ZsA}ouiLlhqF zI4kNE@s|$KW0S)(%IP?zQrquV$8SBmIDLr=i^g9#o$X&&Oky18*VBK5Af>CoSVocdG{2SZBP z9$9KiMM2!3Q1Y-+cLU;(Ki5?ZuXyFPt>tn<5zC-gac8ZS>t|)R5>4gSrXL%|qZbyJ z&+<5$PHVgBF=nRx_&UceP6Ywh-jF`!Z)U2ymgTvAz!KtQrC#w)YdD=<>_78<%>biP zNzq5LdE$u`ce}afJXn#49d1YBU6LspGC?$68W4-QCAYazXf-5{o@_F~o^qR8g_h?u z9oM_wa0=wH;no@A^ER@Wwvoe(jl49oGQ3Nq0`9i)F=^&7tznF35zY!5U&d!`d>r@K z__Q<+V8O&IHhzIuZJfb^jgqKO;*^a?#q_jD_e*mNzqIic+@s-eIQJK}E7f(UX`_NI zW^dc`tRuP2PhZ2Yqz!87syzhSDhg zX*6E6GNu?=fsvW9+D59jMSH5PpKVY0{&uqM9bCW)PbiJQ<04CW1Y5k8KSx~@SFwgm zlytmE7CukOz)QT{zd$L5Kk)W>jFO2z<0u}dWZ{cE%eygZTK~Zz6HnOo$cX(eCQN*Z zKbH0`j`(7{SKO27x;#08$h?pHlImdyE#WfMTRe=8I|iK)clO>#e1-&szeX1lg#2}K z{-l2DSaN<-sJ+~l?8~P(CYk94nLD1GeERr}n@UMW)At&poiM1LFhm~!B$dTz(Uh?; zVkKv8gWT+5LQRboEj49zrpS{&HC~LXsd#59uBMKO!~OhS;3;$afx}U}iOVX&4ZMyr zr3hJh4y$A?%IaFhIwgZFF2hk=UFB=e_{rfvL5}v}@h3=LaFy_)-f3;TD~d=SbtPIQ-aKIFicj;(bEgE{>*- z`SK{c)cbvTOym#vvMn|r^yP8UPx|ukE{>-@f7q9kVn0QB7as}V>VC}mFP}z0 z!QM!#;7YLPJKXaS_dJ(-3m;Y2UoOx4DmS}>XfCbqK+k229lo%R#8`H7N30!~xpZO& zeWfj-u1P;}=Q@!-7hIF_2Lid=BvIz%jn8#Ol8Z!Fl9Yc#Nm8_9N|I75fi%Z|)69sl g7h8cB-G?B(2-n=9eO>|)#-F_SYN)f9$D<4U4~BfNegFUf 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%3oO4VYLlFoCLpB5oO&#FW6enoJ6B 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(