From 633a6cbba8c3f3fe30ae88f1f4d09d6edf4c35cf Mon Sep 17 00:00:00 2001 From: lsrong Date: Sun, 20 Aug 2023 23:05:39 +0800 Subject: [PATCH] init project --- spring_aop_01/.gitignore | 38 +++++++ spring_aop_01/pom.xml | 60 ++++++++++++ .../main/java/com/msb/aspect/DaoAspect.java | 87 ++++++++++++++++ .../main/java/com/msb/aspect/DaoAspect2.java | 87 ++++++++++++++++ .../java/com/msb/config/SpringConfig.java | 11 +++ .../src/main/java/com/msb/dao/EmpDao.java | 5 + .../src/main/java/com/msb/dao/UserDao.java | 5 + .../java/com/msb/dao/impl/EmpDaoImpl.java | 15 +++ .../java/com/msb/dao/impl/UserDaoImpl.java | 14 +++ .../main/java/com/msb/service/EmpService.java | 6 ++ .../java/com/msb/service/UserService.java | 5 + .../com/msb/service/impl/EmpServiceImpl.java | 24 +++++ .../com/msb/service/impl/UserServiceImpl.java | 22 +++++ .../src/main/resources/applicationContext.xml | 39 ++++++++ .../src/test/java/com/msb/TestAspect.java | 32 ++++++ .../src/test/java/com/msb/TestCglib.java | 63 ++++++++++++ .../src/test/java/com/msb/TestProxy.java | 68 +++++++++++++ .../test/java/com/msb/TestStaticProxy.java | 43 ++++++++ spring_ioc_01/.gitignore | 38 +++++++ spring_ioc_01/pom.xml | 45 +++++++++ .../src/main/java/com/msb/bean/Book.java | 42 ++++++++ .../src/main/java/com/msb/bean/Cat.java | 42 ++++++++ .../src/main/java/com/msb/bean/Dept.java | 8 ++ .../src/main/java/com/msb/bean/Emp.java | 21 ++++ .../src/main/java/com/msb/bean/Mouse.java | 41 ++++++++ .../src/main/java/com/msb/bean/Student.java | 81 +++++++++++++++ .../src/main/java/com/msb/bean/User.java | 51 ++++++++++ .../src/main/resources/applicationContext.xml | 38 +++++++ .../main/resources/applicationContext1.xml | 49 ++++++++++ .../main/resources/applicationContext2.xml | 49 ++++++++++ .../main/resources/applicationContext3.xml | 63 ++++++++++++ .../main/resources/applicationContext4.xml | 19 ++++ .../main/resources/applicationContext5.xml | 15 +++ .../main/resources/applicationContext6.xml | 24 +++++ .../src/main/resources/jdbc.properties | 4 + .../src/test/java/com/msb/Test1.java | 31 ++++++ .../src/test/java/com/msb/Test2.java | 26 +++++ .../src/test/java/com/msb/Test3.java | 25 +++++ .../src/test/java/com/msb/Test4.java | 18 ++++ .../src/test/java/com/msb/Test5.java | 17 ++++ .../src/test/java/com/msb/Test6.java | 16 +++ spring_ioc_02/.gitignore | 38 +++++++ spring_ioc_02/pom.xml | 31 ++++++ .../src/main/java/com/msb/bean/Student.java | 11 +++ .../src/main/java/com/msb/bean/User.java | 12 +++ .../java/com/msb/config/SpringConfig.java | 9 ++ .../com/msb/controller/UserController.java | 7 ++ .../src/main/java/com/msb/dao/UserDao.java | 5 + .../java/com/msb/dao/impl/UserDaoImplA.java | 12 +++ .../java/com/msb/dao/impl/UserDaoImplB.java | 12 +++ .../java/com/msb/service/UserService.java | 5 + .../com/msb/service/impl/UserServiceImpl.java | 34 +++++++ .../src/main/resources/applicationContext.xml | 12 +++ .../main/resources/applicationContext1.xml | 14 +++ .../src/main/resources/demo.properties | 3 + .../src/test/java/com/msb/Test1.java | 20 ++++ .../src/test/java/com/msb/Test2.java | 28 ++++++ spring_jbdctemplate_01/.gitignore | 38 +++++++ spring_jbdctemplate_01/pom.xml | 87 ++++++++++++++++ .../src/main/java/com/msb/dao/DeptDao.java | 13 +++ .../src/main/java/com/msb/dao/StudentDao.java | 19 ++++ .../java/com/msb/dao/impl/DeptDaoImpl.java | 73 ++++++++++++++ .../java/com/msb/dao/impl/StudentDaoImpl.java | 98 +++++++++++++++++++ .../src/main/java/com/msb/pojo/Dept.java | 14 +++ .../src/main/java/com/msb/pojo/Student.java | 18 ++++ .../java/com/msb/service/DeptService.java | 13 +++ .../java/com/msb/service/StudentService.java | 19 ++++ .../com/msb/service/impl/DeptServiceImpl.java | 32 ++++++ .../msb/service/impl/StudentServiceImpl.java | 47 +++++++++ .../src/main/resources/applicationContext.xml | 35 +++++++ .../src/main/resources/jdbc.properties | 4 + .../src/test/java/com/msb/test/TestDept.java | 49 ++++++++++ .../test/java/com/msb/test/TestStudent.java | 38 +++++++ 73 files changed, 2237 insertions(+) create mode 100644 spring_aop_01/.gitignore create mode 100644 spring_aop_01/pom.xml create mode 100644 spring_aop_01/src/main/java/com/msb/aspect/DaoAspect.java create mode 100644 spring_aop_01/src/main/java/com/msb/aspect/DaoAspect2.java create mode 100644 spring_aop_01/src/main/java/com/msb/config/SpringConfig.java create mode 100644 spring_aop_01/src/main/java/com/msb/dao/EmpDao.java create mode 100644 spring_aop_01/src/main/java/com/msb/dao/UserDao.java create mode 100644 spring_aop_01/src/main/java/com/msb/dao/impl/EmpDaoImpl.java create mode 100644 spring_aop_01/src/main/java/com/msb/dao/impl/UserDaoImpl.java create mode 100644 spring_aop_01/src/main/java/com/msb/service/EmpService.java create mode 100644 spring_aop_01/src/main/java/com/msb/service/UserService.java create mode 100644 spring_aop_01/src/main/java/com/msb/service/impl/EmpServiceImpl.java create mode 100644 spring_aop_01/src/main/java/com/msb/service/impl/UserServiceImpl.java create mode 100644 spring_aop_01/src/main/resources/applicationContext.xml create mode 100644 spring_aop_01/src/test/java/com/msb/TestAspect.java create mode 100644 spring_aop_01/src/test/java/com/msb/TestCglib.java create mode 100644 spring_aop_01/src/test/java/com/msb/TestProxy.java create mode 100644 spring_aop_01/src/test/java/com/msb/TestStaticProxy.java create mode 100644 spring_ioc_01/.gitignore create mode 100644 spring_ioc_01/pom.xml create mode 100644 spring_ioc_01/src/main/java/com/msb/bean/Book.java create mode 100644 spring_ioc_01/src/main/java/com/msb/bean/Cat.java create mode 100644 spring_ioc_01/src/main/java/com/msb/bean/Dept.java create mode 100644 spring_ioc_01/src/main/java/com/msb/bean/Emp.java create mode 100644 spring_ioc_01/src/main/java/com/msb/bean/Mouse.java create mode 100644 spring_ioc_01/src/main/java/com/msb/bean/Student.java create mode 100644 spring_ioc_01/src/main/java/com/msb/bean/User.java create mode 100644 spring_ioc_01/src/main/resources/applicationContext.xml create mode 100644 spring_ioc_01/src/main/resources/applicationContext1.xml create mode 100644 spring_ioc_01/src/main/resources/applicationContext2.xml create mode 100644 spring_ioc_01/src/main/resources/applicationContext3.xml create mode 100644 spring_ioc_01/src/main/resources/applicationContext4.xml create mode 100644 spring_ioc_01/src/main/resources/applicationContext5.xml create mode 100644 spring_ioc_01/src/main/resources/applicationContext6.xml create mode 100644 spring_ioc_01/src/main/resources/jdbc.properties create mode 100644 spring_ioc_01/src/test/java/com/msb/Test1.java create mode 100644 spring_ioc_01/src/test/java/com/msb/Test2.java create mode 100644 spring_ioc_01/src/test/java/com/msb/Test3.java create mode 100644 spring_ioc_01/src/test/java/com/msb/Test4.java create mode 100644 spring_ioc_01/src/test/java/com/msb/Test5.java create mode 100644 spring_ioc_01/src/test/java/com/msb/Test6.java create mode 100644 spring_ioc_02/.gitignore create mode 100644 spring_ioc_02/pom.xml create mode 100644 spring_ioc_02/src/main/java/com/msb/bean/Student.java create mode 100644 spring_ioc_02/src/main/java/com/msb/bean/User.java create mode 100644 spring_ioc_02/src/main/java/com/msb/config/SpringConfig.java create mode 100644 spring_ioc_02/src/main/java/com/msb/controller/UserController.java create mode 100644 spring_ioc_02/src/main/java/com/msb/dao/UserDao.java create mode 100644 spring_ioc_02/src/main/java/com/msb/dao/impl/UserDaoImplA.java create mode 100644 spring_ioc_02/src/main/java/com/msb/dao/impl/UserDaoImplB.java create mode 100644 spring_ioc_02/src/main/java/com/msb/service/UserService.java create mode 100644 spring_ioc_02/src/main/java/com/msb/service/impl/UserServiceImpl.java create mode 100644 spring_ioc_02/src/main/resources/applicationContext.xml create mode 100644 spring_ioc_02/src/main/resources/applicationContext1.xml create mode 100644 spring_ioc_02/src/main/resources/demo.properties create mode 100644 spring_ioc_02/src/test/java/com/msb/Test1.java create mode 100644 spring_ioc_02/src/test/java/com/msb/Test2.java create mode 100644 spring_jbdctemplate_01/.gitignore create mode 100644 spring_jbdctemplate_01/pom.xml create mode 100644 spring_jbdctemplate_01/src/main/java/com/msb/dao/DeptDao.java create mode 100644 spring_jbdctemplate_01/src/main/java/com/msb/dao/StudentDao.java create mode 100644 spring_jbdctemplate_01/src/main/java/com/msb/dao/impl/DeptDaoImpl.java create mode 100644 spring_jbdctemplate_01/src/main/java/com/msb/dao/impl/StudentDaoImpl.java create mode 100644 spring_jbdctemplate_01/src/main/java/com/msb/pojo/Dept.java create mode 100644 spring_jbdctemplate_01/src/main/java/com/msb/pojo/Student.java create mode 100644 spring_jbdctemplate_01/src/main/java/com/msb/service/DeptService.java create mode 100644 spring_jbdctemplate_01/src/main/java/com/msb/service/StudentService.java create mode 100644 spring_jbdctemplate_01/src/main/java/com/msb/service/impl/DeptServiceImpl.java create mode 100644 spring_jbdctemplate_01/src/main/java/com/msb/service/impl/StudentServiceImpl.java create mode 100644 spring_jbdctemplate_01/src/main/resources/applicationContext.xml create mode 100644 spring_jbdctemplate_01/src/main/resources/jdbc.properties create mode 100644 spring_jbdctemplate_01/src/test/java/com/msb/test/TestDept.java create mode 100644 spring_jbdctemplate_01/src/test/java/com/msb/test/TestStudent.java diff --git a/spring_aop_01/.gitignore b/spring_aop_01/.gitignore new file mode 100644 index 0000000..5ff6309 --- /dev/null +++ b/spring_aop_01/.gitignore @@ -0,0 +1,38 @@ +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### IntelliJ IDEA ### +.idea/modules.xml +.idea/jarRepositories.xml +.idea/compiler.xml +.idea/libraries/ +*.iws +*.iml +*.ipr + +### Eclipse ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ + +### Mac OS ### +.DS_Store \ No newline at end of file diff --git a/spring_aop_01/pom.xml b/spring_aop_01/pom.xml new file mode 100644 index 0000000..9d00095 --- /dev/null +++ b/spring_aop_01/pom.xml @@ -0,0 +1,60 @@ + + + 4.0.0 + + org.example + spring_aop_01 + 1.0-SNAPSHOT + + + 17 + 17 + UTF-8 + + + + + + org.springframework + spring-context + 6.0.11 + + + + org.springframework + spring-aspects + 6.0.11 + + + + junit + junit + 4.13.2 + test + + + + + + aopalliance + aopalliance + 1.0 + + + + commons-logging + commons-logging + 1.2 + + + + org.projectlombok + lombok + 1.18.12 + provided + + + + \ No newline at end of file diff --git a/spring_aop_01/src/main/java/com/msb/aspect/DaoAspect.java b/spring_aop_01/src/main/java/com/msb/aspect/DaoAspect.java new file mode 100644 index 0000000..da1620d --- /dev/null +++ b/spring_aop_01/src/main/java/com/msb/aspect/DaoAspect.java @@ -0,0 +1,87 @@ +package com.msb.aspect; + +import org.aspectj.lang.JoinPoint; +import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.annotation.*; +import org.springframework.core.annotation.Order; +import org.springframework.stereotype.Component; + +import java.util.Arrays; + +@Aspect +@Component +@Order(2) +public class DaoAspect { + + //定义公共切点, 切点表达式直接指向接口 + @Pointcut("execution(* com.msb.dao.*.add*(..))") + public void addPointCut(){} + + /** + * 前置通知: 切点方法执行之前先执行的功能 + * 参数列表可以用JoinPoint接收切点对象 + * 可以获取方法执行的参数 + * */ + @Before("addPointCut()") + public void methodBefore(JoinPoint joinPoint){ + // joinPoint 目标增强的方法就是 addUser,可以获取参数等 +// Object[] args = joinPoint.getArgs(); +// System.out.println("args: "+ Arrays.toString(args)); + + // 前置通知 + System.out.println("methodBefore invoked....."); + } + + /** + * 后置通知:方法执行之后要增强的功能 + * 无论切点方法是否出现异常都会执行的方法 + * 参数列表可以用JoinPoint接收切点对象 + * */ + @After("addPointCut()") + public void methodAfter(JoinPoint joinPoint){ + System.out.println("methodAfter invoked..."); + } + + /** + * 返回通知:切点方法正常运行结束后增强的功能 + * 如果方法运行过程中出现异常,则该功能不运行 + * 参数列表可以用 JoinPoint joinPoint接收切点对象 + * 可以用Object res接收方法返回值,需要用returning指定返回值名称 + * */ + @AfterReturning(value = "addPointCut()", returning = "res") + public void methodAfterReturning(JoinPoint joinPoint, Object res){ + System.out.println("methodAfterReturning invoked..."); +// System.out.println(res); + } + + /** + * 异常通知:切点方法出现异常时运行的增强功能 + * 如果方法运行没有出现异常,则该功能不运行 + * 参数列表可以用Exception ex接收异常对象 需要通过throwing指定异常名称 + * */ + @AfterThrowing(value = "addPointCut()", throwing = "exception") + public void methodAfterThrowing(Exception exception){ + System.out.println("methodAfterThrowing invoked...."); +// System.out.println(exception.getMessage()); + } + + /** + * 环绕通知:在切点方法之前和之后都进行功能的增强 + * 需要在通知中定义方法执行的位置,并在执行位置之前和之后自定义增强的功能 + * 方法列表可以通过ProceedingJoinPoint获取执行的切点 + * 通过proceedingJoinPoint.proceed()方法控制切点方法的执行位置 + * proceedingJoinPoint.proceed()方法会将切点方法的返回值获取到,并交给我们,可以做后续处理 + * 我们在环绕通知的最后需要将切点方法的返回值继续向上返回,否则切点方法在执行时接收不到返回值 + * */ + @Around(value = "addPointCut()") + public Object methodAround(ProceedingJoinPoint proceedingJoinPoint) throws Throwable { + System.out.println("methodAroundA invoked..."); + Object res = proceedingJoinPoint.proceed(); + System.out.println("methodAroundB invoked..."); + return res; + } + + + + +} diff --git a/spring_aop_01/src/main/java/com/msb/aspect/DaoAspect2.java b/spring_aop_01/src/main/java/com/msb/aspect/DaoAspect2.java new file mode 100644 index 0000000..9a43c1c --- /dev/null +++ b/spring_aop_01/src/main/java/com/msb/aspect/DaoAspect2.java @@ -0,0 +1,87 @@ +package com.msb.aspect; + +import org.aspectj.lang.JoinPoint; +import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.annotation.*; +import org.springframework.core.annotation.Order; +import org.springframework.stereotype.Component; + +import java.util.Arrays; + +@Aspect +@Component +@Order(1) +public class DaoAspect2 { + + //定义公共切点, 切点表达式直接指向接口 + @Pointcut("execution(* com.msb.dao.*.add*(..))") + public void addPointCut(){} + + /** + * 前置通知: 切点方法执行之前先执行的功能 + * 参数列表可以用JoinPoint接收切点对象 + * 可以获取方法执行的参数 + * */ + @Before("addPointCut()") + public void methodBefore(JoinPoint joinPoint){ +// // joinPoint 目标增强的方法就是 addUser,可以获取参数等 +// Object[] args = joinPoint.getArgs(); +// System.out.println("args: "+ Arrays.toString(args)); + + // 前置通知 + System.out.println("methodBefore2 invoked....."); + } + + /** + * 后置通知:方法执行之后要增强的功能 + * 无论切点方法是否出现异常都会执行的方法 + * 参数列表可以用JoinPoint接收切点对象 + * */ + @After("addPointCut()") + public void methodAfter(JoinPoint joinPoint){ + System.out.println("methodAfter2 invoked..."); + } + + /** + * 返回通知:切点方法正常运行结束后增强的功能 + * 如果方法运行过程中出现异常,则该功能不运行 + * 参数列表可以用 JoinPoint joinPoint接收切点对象 + * 可以用Object res接收方法返回值,需要用returning指定返回值名称 + * */ + @AfterReturning(value = "addPointCut()", returning = "res") + public void methodAfterReturning(JoinPoint joinPoint, Object res){ + System.out.println("methodAfterReturning2 invoked..."); +// System.out.println(res); + } + + /** + * 异常通知:切点方法出现异常时运行的增强功能 + * 如果方法运行没有出现异常,则该功能不运行 + * 参数列表可以用Exception ex接收异常对象 需要通过throwing指定异常名称 + * */ + @AfterThrowing(value = "addPointCut()", throwing = "exception") + public void methodAfterThrowing(Exception exception){ + System.out.println("methodAfterThrowing2 invoked...."); +// System.out.println(exception.getMessage()); + } + + /** + * 环绕通知:在切点方法之前和之后都进行功能的增强 + * 需要在通知中定义方法执行的位置,并在执行位置之前和之后自定义增强的功能 + * 方法列表可以通过ProceedingJoinPoint获取执行的切点 + * 通过proceedingJoinPoint.proceed()方法控制切点方法的执行位置 + * proceedingJoinPoint.proceed()方法会将切点方法的返回值获取到,并交给我们,可以做后续处理 + * 我们在环绕通知的最后需要将切点方法的返回值继续向上返回,否则切点方法在执行时接收不到返回值 + * */ + @Around(value = "addPointCut()") + public Object methodAround(ProceedingJoinPoint proceedingJoinPoint) throws Throwable { + System.out.println("methodAroundA2 invoked..."); + Object res = proceedingJoinPoint.proceed(); + System.out.println("methodAroundB2 invoked..."); + return res; + } + + + + +} diff --git a/spring_aop_01/src/main/java/com/msb/config/SpringConfig.java b/spring_aop_01/src/main/java/com/msb/config/SpringConfig.java new file mode 100644 index 0000000..d77448d --- /dev/null +++ b/spring_aop_01/src/main/java/com/msb/config/SpringConfig.java @@ -0,0 +1,11 @@ +package com.msb.config; + +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.EnableAspectJAutoProxy; + +@ComponentScan("com.msb") +@Configuration +@EnableAspectJAutoProxy(proxyTargetClass = true) +public class SpringConfig { +} diff --git a/spring_aop_01/src/main/java/com/msb/dao/EmpDao.java b/spring_aop_01/src/main/java/com/msb/dao/EmpDao.java new file mode 100644 index 0000000..a7b42a9 --- /dev/null +++ b/spring_aop_01/src/main/java/com/msb/dao/EmpDao.java @@ -0,0 +1,5 @@ +package com.msb.dao; + +public interface EmpDao { + Integer addEmp(int empno, String name, String Job); +} diff --git a/spring_aop_01/src/main/java/com/msb/dao/UserDao.java b/spring_aop_01/src/main/java/com/msb/dao/UserDao.java new file mode 100644 index 0000000..8327be6 --- /dev/null +++ b/spring_aop_01/src/main/java/com/msb/dao/UserDao.java @@ -0,0 +1,5 @@ +package com.msb.dao; + +public interface UserDao { + Integer addUser(Integer userId, String username); +} diff --git a/spring_aop_01/src/main/java/com/msb/dao/impl/EmpDaoImpl.java b/spring_aop_01/src/main/java/com/msb/dao/impl/EmpDaoImpl.java new file mode 100644 index 0000000..8d5f172 --- /dev/null +++ b/spring_aop_01/src/main/java/com/msb/dao/impl/EmpDaoImpl.java @@ -0,0 +1,15 @@ +package com.msb.dao.impl; + +import com.msb.dao.EmpDao; +import com.msb.dao.UserDao; +import com.msb.service.EmpService; +import org.springframework.stereotype.Repository; + +@Repository +public class EmpDaoImpl implements EmpDao { + @Override + public Integer addEmp(int empno, String name, String Job) { + System.out.println("EmpDaoImpl addEmp() ...."); + return 1; + } +} diff --git a/spring_aop_01/src/main/java/com/msb/dao/impl/UserDaoImpl.java b/spring_aop_01/src/main/java/com/msb/dao/impl/UserDaoImpl.java new file mode 100644 index 0000000..a8a130b --- /dev/null +++ b/spring_aop_01/src/main/java/com/msb/dao/impl/UserDaoImpl.java @@ -0,0 +1,14 @@ +package com.msb.dao.impl; + +import com.msb.dao.UserDao; +import org.springframework.stereotype.Repository; + +@Repository +public class UserDaoImpl implements UserDao { + @Override + public Integer addUser(Integer userId, String username) { + System.out.println("UserDaoImpl add ...."); +// int i = 1/0; + return 1; + } +} diff --git a/spring_aop_01/src/main/java/com/msb/service/EmpService.java b/spring_aop_01/src/main/java/com/msb/service/EmpService.java new file mode 100644 index 0000000..ed9cc77 --- /dev/null +++ b/spring_aop_01/src/main/java/com/msb/service/EmpService.java @@ -0,0 +1,6 @@ +package com.msb.service; + +public interface EmpService { + + int addEmp(int empno, String name, String job); +} diff --git a/spring_aop_01/src/main/java/com/msb/service/UserService.java b/spring_aop_01/src/main/java/com/msb/service/UserService.java new file mode 100644 index 0000000..6e4e7dc --- /dev/null +++ b/spring_aop_01/src/main/java/com/msb/service/UserService.java @@ -0,0 +1,5 @@ +package com.msb.service; + +public interface UserService { + Integer addUser(Integer userId, String username); +} diff --git a/spring_aop_01/src/main/java/com/msb/service/impl/EmpServiceImpl.java b/spring_aop_01/src/main/java/com/msb/service/impl/EmpServiceImpl.java new file mode 100644 index 0000000..ecec6fc --- /dev/null +++ b/spring_aop_01/src/main/java/com/msb/service/impl/EmpServiceImpl.java @@ -0,0 +1,24 @@ +package com.msb.service.impl; + +import com.msb.dao.EmpDao; +import com.msb.service.EmpService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class EmpServiceImpl implements EmpService { + +// @Autowired + private final EmpDao empDao; + + public EmpServiceImpl(EmpDao empDao){ + this.empDao = empDao; + } + + @Override + public int addEmp(int empno, String name, String job) { + System.out.println("empServiceImpl add()..."); + + return empDao.addEmp(empno, name, job); + } +} diff --git a/spring_aop_01/src/main/java/com/msb/service/impl/UserServiceImpl.java b/spring_aop_01/src/main/java/com/msb/service/impl/UserServiceImpl.java new file mode 100644 index 0000000..ee5b646 --- /dev/null +++ b/spring_aop_01/src/main/java/com/msb/service/impl/UserServiceImpl.java @@ -0,0 +1,22 @@ +package com.msb.service.impl; + +import com.msb.dao.UserDao; +import com.msb.service.UserService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class UserServiceImpl implements UserService { +// @Autowired + private final UserDao userDao; + + public UserServiceImpl(UserDao userDao){ + this.userDao = userDao; + } + @Override + public Integer addUser(Integer userId, String username) { + System.out.println("UserServiceImpl add..."); + + return this.userDao.addUser(userId, username); + } +} diff --git a/spring_aop_01/src/main/resources/applicationContext.xml b/spring_aop_01/src/main/resources/applicationContext.xml new file mode 100644 index 0000000..1702484 --- /dev/null +++ b/spring_aop_01/src/main/resources/applicationContext.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/spring_aop_01/src/test/java/com/msb/TestAspect.java b/spring_aop_01/src/test/java/com/msb/TestAspect.java new file mode 100644 index 0000000..04ef3d9 --- /dev/null +++ b/spring_aop_01/src/test/java/com/msb/TestAspect.java @@ -0,0 +1,32 @@ +package com.msb; + +import com.msb.config.SpringConfig; +import com.msb.dao.UserDao; +import com.msb.service.UserService; +import org.junit.Test; +import org.springframework.context.ApplicationContext; +import org.springframework.context.annotation.AnnotationConfigApplicationContext; +import org.springframework.context.support.ClassPathXmlApplicationContext; + +public class TestAspect { + + @Test + public void testGetBean(){ + ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml"); + + // userDao 生成一个对象再自动生产一个代理对象,然后再返回代理对象 + UserDao userDao = applicationContext.getBean(UserDao.class); + Integer rows = userDao.addUser(1, "张三"); + System.out.println(rows); + } + + @Test + public void testGetBean2(){ + ApplicationContext applicationContext = new AnnotationConfigApplicationContext(SpringConfig.class); + UserDao userDao = applicationContext.getBean(UserDao.class); + Integer rows = userDao.addUser(1, "张三"); + // System.out.println(userDao.getClass().getSimpleName()); + System.out.println(rows); + } + +} diff --git a/spring_aop_01/src/test/java/com/msb/TestCglib.java b/spring_aop_01/src/test/java/com/msb/TestCglib.java new file mode 100644 index 0000000..eb3642c --- /dev/null +++ b/spring_aop_01/src/test/java/com/msb/TestCglib.java @@ -0,0 +1,63 @@ +package com.msb; + +import org.junit.Test; +import org.springframework.cglib.proxy.Enhancer; +import org.springframework.cglib.proxy.MethodInterceptor; +import org.springframework.cglib.proxy.MethodProxy; + +import java.lang.reflect.Method; + +public class TestCglib { + + @Test + public void testCglib(){ + Person2 person2 = new Person2(); + // 获取一个Person的代理对象 + // 1 获得一个Enhancer对象 + Enhancer enhancer=new Enhancer(); + // 2 设置父类字节码 + enhancer.setSuperclass(person2.getClass()); + // 3 获取MethodIntercepter对象 用于定义增强规则 + MethodInterceptor methodInterceptor=new MethodInterceptor() { + @Override + public Object intercept(Object o, Method method, Object[] objects, MethodProxy methodProxy) throws Throwable { + /*Object o, 生成之后的代理对象 personProxy + Method method, 父类中原本要执行的方法 Person>>> eat() + Object[] objects, 方法在调用时传入的实参数组 + MethodProxy methodProxy 子类中重写父类的方法 personProxy >>> eat() + */ + Object res =null; + if(method.getName().equals("eat")){ + // 如果是eat方法 则增强并运行 + System.out.println("饭前洗手"); + res=methodProxy.invokeSuper(o,objects); + System.out.println("饭后刷碗"); + }else{ + // 如果是其他方法 不增强运行 + res=methodProxy.invokeSuper(o,objects); // 子类对象方法在执行,默认会调用父类对应被重写的方法 + } + return res; + } + }; + // 4 设置methodInterceptor + enhancer.setCallback(methodInterceptor); + // 5 获得代理对象 + Person2 personProxy = (Person2) enhancer.create(); + // 6 使用代理对象完成功能 + personProxy.eat("包子"); + + +// person2.eat("包子"); + } +} + + +class Person2{ + + public Person2(){ + } + + public void eat(String foodName) { + System.out.println("正在吃"+foodName); + } +} \ No newline at end of file diff --git a/spring_aop_01/src/test/java/com/msb/TestProxy.java b/spring_aop_01/src/test/java/com/msb/TestProxy.java new file mode 100644 index 0000000..de1b418 --- /dev/null +++ b/spring_aop_01/src/test/java/com/msb/TestProxy.java @@ -0,0 +1,68 @@ +package com.msb; + +import java.lang.reflect.InvocationHandler; +import java.lang.reflect.Method; +import java.lang.reflect.Proxy; + +public class TestProxy { + public static void main(String[] args) { + Dinner dinner = new Person1("张三"); + + // 通过Proxy 动态代理获取一个代理对象,在代理对象里面,对某个方法进行增强 + // ClassLoader loader, 被代理对象的类加载器 + ClassLoader classLoader = dinner.getClass().getClassLoader(); + + // Class[] interfaces, 被代理对象所实现的所有接口 + Class[] interfaces= dinner.getClass().getInterfaces(); + + // InvocationHandler h 执行处理器对象,专门定义增强的规则 + InvocationHandler handler = new InvocationHandler(){ + // invoke 当我们让代理对象调用任何方法时,都会触发invoke方法的执行 + public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { +// Object proxy, 代理对象 +// Method method,被代理的方法 +// Object[] args,被代理方法运行时的实参 + Object res=null; + if(method.getName().equals("eat")){ + System.out.println("饭前洗手"); + // 让原有的eat的方法去运行 + res =method.invoke(dinner, args); + System.out.println("饭后刷碗"); + }else{ + // 如果是其他方法,那么正常执行就可以了 + res =method.invoke(dinner, args); + } + return res; + } + }; + + + Dinner dinnerProxy = (Dinner) Proxy.newProxyInstance(classLoader, interfaces, handler); + dinnerProxy.eat("包子"); + dinnerProxy.drink(); + } + +} + + +interface Dinner{ + void eat(String foodName); + void drink(); +} +class Person1 implements Dinner{ + private String name; + + public Person1(String name){ + this.name = name; + } + + @Override + public void eat(String foodName) { + System.out.println(name+"正在吃"+foodName); + } + + @Override + public void drink() { + System.out.println(name+"正在喝茶"); + } +} \ No newline at end of file diff --git a/spring_aop_01/src/test/java/com/msb/TestStaticProxy.java b/spring_aop_01/src/test/java/com/msb/TestStaticProxy.java new file mode 100644 index 0000000..cba8c4e --- /dev/null +++ b/spring_aop_01/src/test/java/com/msb/TestStaticProxy.java @@ -0,0 +1,43 @@ +package com.msb; + +public class TestStaticProxy { + public static void main(String[] args) { + Person person = new Person("张三"); + Court court = new Lawyer(person); + court.doCourt(); + } +} + +interface Court{ + void doCourt(); +} + +// 静态的代理类 +class Lawyer implements Court { + private Person person; + + public Lawyer(Person person){ + this.person = person; + } + + @Override + public void doCourt() { + System.out.println("律师证明张三没有再案发现场!"); + person.doCourt(); + } +} + +// 面向的类,不需要修改的被代理类 +class Person implements Court{ + private String name; + + public Person(String name){ + this.name= name; + } + + @Override + public void doCourt(){ + System.out.println(name+"说:我没有杀人!"); + } +} + diff --git a/spring_ioc_01/.gitignore b/spring_ioc_01/.gitignore new file mode 100644 index 0000000..5ff6309 --- /dev/null +++ b/spring_ioc_01/.gitignore @@ -0,0 +1,38 @@ +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### IntelliJ IDEA ### +.idea/modules.xml +.idea/jarRepositories.xml +.idea/compiler.xml +.idea/libraries/ +*.iws +*.iml +*.ipr + +### Eclipse ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ + +### Mac OS ### +.DS_Store \ No newline at end of file diff --git a/spring_ioc_01/pom.xml b/spring_ioc_01/pom.xml new file mode 100644 index 0000000..514e2d6 --- /dev/null +++ b/spring_ioc_01/pom.xml @@ -0,0 +1,45 @@ + + + 4.0.0 + + org.example + spring_ioc_01 + 1.0-SNAPSHOT + jar + + + + org.springframework + spring-context + 6.0.11 + + + + junit + junit + 4.13.2 + test + + + + com.alibaba + druid + 1.2.18 + + + + mysql + mysql-connector-java + 8.0.33 + + + + + 17 + 17 + 17 + + + \ No newline at end of file diff --git a/spring_ioc_01/src/main/java/com/msb/bean/Book.java b/spring_ioc_01/src/main/java/com/msb/bean/Book.java new file mode 100644 index 0000000..dab6d66 --- /dev/null +++ b/spring_ioc_01/src/main/java/com/msb/bean/Book.java @@ -0,0 +1,42 @@ +package com.msb.bean; + +/** + * @Author: Ma HaiYang + * @Description: MircoMessage:Mark_7001 + */ +public class Book { + private String bname; + private String author; + + @Override + public String toString() { + return "Book{" + + "bname='" + bname + '\'' + + ", author='" + author + '\'' + + '}'; + } + + public Book() { + } + + public Book(String bname, String author) { + this.bname = bname; + this.author = author; + } + + public String getBname() { + return bname; + } + + public void setBname(String bname) { + this.bname = bname; + } + + public String getAuthor() { + return author; + } + + public void setAuthor(String author) { + this.author = author; + } +} diff --git a/spring_ioc_01/src/main/java/com/msb/bean/Cat.java b/spring_ioc_01/src/main/java/com/msb/bean/Cat.java new file mode 100644 index 0000000..cff4235 --- /dev/null +++ b/spring_ioc_01/src/main/java/com/msb/bean/Cat.java @@ -0,0 +1,42 @@ +package com.msb.bean; + +/** + * @Author: Ma HaiYang + * @Description: MircoMessage:Mark_7001 + */ +public class Cat { + private String name; + private Mouse mouse1; + + @Override + public String toString() { + return "Cat{" + + "name='" + name + '\'' + + ", mouse1=" + mouse1 + + '}'; + } + + public Cat() { + } + + public Cat(String name, Mouse mouse1) { + this.name = name; + this.mouse1 = mouse1; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Mouse getMouse1() { + return mouse1; + } + + public void setMouse1(Mouse mouse1) { + this.mouse1 = mouse1; + } +} diff --git a/spring_ioc_01/src/main/java/com/msb/bean/Dept.java b/spring_ioc_01/src/main/java/com/msb/bean/Dept.java new file mode 100644 index 0000000..01bab75 --- /dev/null +++ b/spring_ioc_01/src/main/java/com/msb/bean/Dept.java @@ -0,0 +1,8 @@ +package com.msb.bean; + +/** + * @Author: Ma HaiYang + * @Description: MircoMessage:Mark_7001 + */ +public class Dept { +} diff --git a/spring_ioc_01/src/main/java/com/msb/bean/Emp.java b/spring_ioc_01/src/main/java/com/msb/bean/Emp.java new file mode 100644 index 0000000..1c12a6d --- /dev/null +++ b/spring_ioc_01/src/main/java/com/msb/bean/Emp.java @@ -0,0 +1,21 @@ +package com.msb.bean; + + +/** + * @Author: Ma HaiYang + * @Description: MircoMessage:Mark_7001 + */ +public class Emp { + private Dept dept; + + public void setDept(Dept dept) { + this.dept = dept; + } + + @Override + public String toString() { + return "Emp{" + + "dept=" + dept + + '}'; + } +} diff --git a/spring_ioc_01/src/main/java/com/msb/bean/Mouse.java b/spring_ioc_01/src/main/java/com/msb/bean/Mouse.java new file mode 100644 index 0000000..ee954bf --- /dev/null +++ b/spring_ioc_01/src/main/java/com/msb/bean/Mouse.java @@ -0,0 +1,41 @@ +package com.msb.bean; + +import java.util.Date; + + +public class Mouse { + private String name; + private Date birthdate; + + @Override + public String toString() { + return "Mouse{" + + "name='" + name + '\'' + + ", birthdate=" + birthdate + + '}'; + } + + public Mouse() { + } + + public Mouse(String name, Date birthdate) { + this.name = name; + this.birthdate = birthdate; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Date getBirthdate() { + return birthdate; + } + + public void setBirthdate(Date birthdate) { + this.birthdate = birthdate; + } +} diff --git a/spring_ioc_01/src/main/java/com/msb/bean/Student.java b/spring_ioc_01/src/main/java/com/msb/bean/Student.java new file mode 100644 index 0000000..152dc66 --- /dev/null +++ b/spring_ioc_01/src/main/java/com/msb/bean/Student.java @@ -0,0 +1,81 @@ +package com.msb.bean; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.Set; + +/** + * @Author: Ma HaiYang + * @Description: MircoMessage:Mark_7001 + */ +public class Student { + private String[] books; + private Set bookSet; + private List bookList; + private Map bookMap; + private List bookList2; + + @Override + public String toString() { + return "Student{" + + "books=" + Arrays.toString(books) + + ", bookSet=" + bookSet + + ", bookList=" + bookList + + ", bookMap=" + bookMap + + ", bookList2=" + bookList2 + + '}'; + } + + public String[] getBooks() { + return books; + } + + public void setBooks(String[] books) { + this.books = books; + } + + public Set getBookSet() { + return bookSet; + } + + public void setBookSet(Set bookSet) { + this.bookSet = bookSet; + } + + public List getBookList() { + return bookList; + } + + public void setBookList(List bookList) { + this.bookList = bookList; + } + + public Map getBookMap() { + return bookMap; + } + + public void setBookMap(Map bookMap) { + this.bookMap = bookMap; + } + + public List getBookList2() { + return bookList2; + } + + public void setBookList2(List bookList2) { + this.bookList2 = bookList2; + } + + public Student() { + } + + public Student(String[] books, Set bookSet, List bookList, Map bookMap, List bookList2) { + + this.books = books; + this.bookSet = bookSet; + this.bookList = bookList; + this.bookMap = bookMap; + this.bookList2 = bookList2; + } +} diff --git a/spring_ioc_01/src/main/java/com/msb/bean/User.java b/spring_ioc_01/src/main/java/com/msb/bean/User.java new file mode 100644 index 0000000..24403c5 --- /dev/null +++ b/spring_ioc_01/src/main/java/com/msb/bean/User.java @@ -0,0 +1,51 @@ +package com.msb.bean; + +public class User { + private Integer userid; + private String username; + private String password; + + public User(){ +// System.out.println("没有参数的构造方法"); + System.out.println("第一步:构造user"); + } + + public User(Integer userid, String username, String password){ + this.userid = userid; + this.username = username; + this.password = password; + + System.out.println("有参数的构造方法"); + } + + public void initMethod(){ + System.out.println("第三步:初始化"); + } + + public void destroyMethod(){ + System.out.println("第五步:销毁对象"); + } + + public void setUserid(Integer userid) { + this.userid = userid; + System.out.println("第二步:设置属性"); + } + + + public void setUsername(String username) { + this.username = username; + } + + public void setPassword(String password) { + this.password = password; + } + + @Override + public String toString() { + return "User{" + + "userid=" + userid + + ", username='" + username + '\'' + + ", password='" + password + '\'' + + '}'; + } +} diff --git a/spring_ioc_01/src/main/resources/applicationContext.xml b/spring_ioc_01/src/main/resources/applicationContext.xml new file mode 100644 index 0000000..6809769 --- /dev/null +++ b/spring_ioc_01/src/main/resources/applicationContext.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/spring_ioc_01/src/main/resources/applicationContext1.xml b/spring_ioc_01/src/main/resources/applicationContext1.xml new file mode 100644 index 0000000..faa3eec --- /dev/null +++ b/spring_ioc_01/src/main/resources/applicationContext1.xml @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/spring_ioc_01/src/main/resources/applicationContext2.xml b/spring_ioc_01/src/main/resources/applicationContext2.xml new file mode 100644 index 0000000..faa3eec --- /dev/null +++ b/spring_ioc_01/src/main/resources/applicationContext2.xml @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/spring_ioc_01/src/main/resources/applicationContext3.xml b/spring_ioc_01/src/main/resources/applicationContext3.xml new file mode 100644 index 0000000..4c1ca52 --- /dev/null +++ b/spring_ioc_01/src/main/resources/applicationContext3.xml @@ -0,0 +1,63 @@ + + + + + + + + + + + + + JAVA + MySQL + Spring + + + + + + + JAVA + MySQL + Spring + + + + + + + JAVA + MySQL + Spring + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/spring_ioc_01/src/main/resources/applicationContext4.xml b/spring_ioc_01/src/main/resources/applicationContext4.xml new file mode 100644 index 0000000..88b0259 --- /dev/null +++ b/spring_ioc_01/src/main/resources/applicationContext4.xml @@ -0,0 +1,19 @@ + + + + + + + + + + \ No newline at end of file diff --git a/spring_ioc_01/src/main/resources/applicationContext5.xml b/spring_ioc_01/src/main/resources/applicationContext5.xml new file mode 100644 index 0000000..16b12a6 --- /dev/null +++ b/spring_ioc_01/src/main/resources/applicationContext5.xml @@ -0,0 +1,15 @@ + + + + + + \ No newline at end of file diff --git a/spring_ioc_01/src/main/resources/applicationContext6.xml b/spring_ioc_01/src/main/resources/applicationContext6.xml new file mode 100644 index 0000000..a163c5b --- /dev/null +++ b/spring_ioc_01/src/main/resources/applicationContext6.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/spring_ioc_01/src/main/resources/jdbc.properties b/spring_ioc_01/src/main/resources/jdbc.properties new file mode 100644 index 0000000..3f863ac --- /dev/null +++ b/spring_ioc_01/src/main/resources/jdbc.properties @@ -0,0 +1,4 @@ +jdbc_username=root +jdbc_password=12345678 +jdbc_driver=com.mysql.cj.jdbc.Driver +jdbc_url=jdbc:mysql://127.0.0.1:3306/learnjdbc?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true \ No newline at end of file diff --git a/spring_ioc_01/src/test/java/com/msb/Test1.java b/spring_ioc_01/src/test/java/com/msb/Test1.java new file mode 100644 index 0000000..741760f --- /dev/null +++ b/spring_ioc_01/src/test/java/com/msb/Test1.java @@ -0,0 +1,31 @@ +package com.msb; + +import com.msb.bean.User; +import org.springframework.context.ApplicationContext; +import org.springframework.context.support.ClassPathXmlApplicationContext; + +public class Test1 { + @org.junit.Test + public void testGetBean(){ + ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml"); + User user1 = applicationContext.getBean("user1", User.class); + System.out.println(user1); + + + User user2 = applicationContext.getBean("user2", User.class); + System.out.println(user2); + + User user3 = applicationContext.getBean("user3", User.class); + System.out.println(user3); + + User user4 = applicationContext.getBean("user4", User.class); + System.out.println(user4); + + User user5 = applicationContext.getBean("user5", User.class); + System.out.println(user5); + + User user6 = applicationContext.getBean("user6", User.class); + System.out.println(user6); + + } +} diff --git a/spring_ioc_01/src/test/java/com/msb/Test2.java b/spring_ioc_01/src/test/java/com/msb/Test2.java new file mode 100644 index 0000000..018013b --- /dev/null +++ b/spring_ioc_01/src/test/java/com/msb/Test2.java @@ -0,0 +1,26 @@ +package com.msb; + +import com.msb.bean.Cat; +import com.msb.bean.Mouse; +import org.junit.Test; +import org.springframework.context.ApplicationContext; +import org.springframework.context.support.ClassPathXmlApplicationContext; + +public class Test2 { + + @Test + public void testGetBean(){ + ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext1.xml"); + Mouse mouse = applicationContext.getBean("mouse1", Mouse.class); + System.out.println(mouse); + + + Cat cat1 = applicationContext.getBean("cat1", Cat.class); + System.out.println(cat1); + + Cat cat2 = applicationContext.getBean("cat2", Cat.class); + System.out.println(cat2); + + + } +} diff --git a/spring_ioc_01/src/test/java/com/msb/Test3.java b/spring_ioc_01/src/test/java/com/msb/Test3.java new file mode 100644 index 0000000..8d41424 --- /dev/null +++ b/spring_ioc_01/src/test/java/com/msb/Test3.java @@ -0,0 +1,25 @@ +package com.msb; + +import com.msb.bean.Mouse; +import com.msb.bean.Student; +import org.junit.Test; +import org.springframework.context.ApplicationContext; +import org.springframework.context.support.ClassPathXmlApplicationContext; + +import java.util.Arrays; + +public class Test3 { + + @Test + public void testGetBean(){ + ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext3.xml"); + Student student1 = applicationContext.getBean("student1", Student.class); + System.out.println(Arrays.toString(student1.getBooks())); + System.out.println(student1.getBookSet()); + System.out.println(student1.getBookList()); + System.out.println(student1.getBookMap()); + System.out.println(student1.getBookList2()); + + + } +} diff --git a/spring_ioc_01/src/test/java/com/msb/Test4.java b/spring_ioc_01/src/test/java/com/msb/Test4.java new file mode 100644 index 0000000..9fbd172 --- /dev/null +++ b/spring_ioc_01/src/test/java/com/msb/Test4.java @@ -0,0 +1,18 @@ +package com.msb; + +import com.msb.bean.User; +import org.junit.Test; +import org.springframework.context.support.ClassPathXmlApplicationContext; + +public class Test4 { + + @Test + public void testGetBean(){ + ClassPathXmlApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext4.xml"); + User user = applicationContext.getBean("user", User.class); + System.out.println("第四部: 获取"); + applicationContext.close(); + + + } +} diff --git a/spring_ioc_01/src/test/java/com/msb/Test5.java b/spring_ioc_01/src/test/java/com/msb/Test5.java new file mode 100644 index 0000000..7335210 --- /dev/null +++ b/spring_ioc_01/src/test/java/com/msb/Test5.java @@ -0,0 +1,17 @@ +package com.msb; + +import com.msb.bean.Emp; +import com.msb.bean.User; +import org.junit.Test; +import org.springframework.context.ApplicationContext; +import org.springframework.context.support.ClassPathXmlApplicationContext; + +public class Test5 { + + @Test + public void testGetBean(){ + ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext5.xml"); + Emp emp = applicationContext.getBean("emp", Emp.class); + System.out.println(emp); + } +} diff --git a/spring_ioc_01/src/test/java/com/msb/Test6.java b/spring_ioc_01/src/test/java/com/msb/Test6.java new file mode 100644 index 0000000..e701d81 --- /dev/null +++ b/spring_ioc_01/src/test/java/com/msb/Test6.java @@ -0,0 +1,16 @@ +package com.msb; + +import com.alibaba.druid.pool.DruidDataSource; +import org.junit.Test; +import org.springframework.context.ApplicationContext; +import org.springframework.context.support.ClassPathXmlApplicationContext; + +public class Test6 { + + @Test + public void testGetBean(){ + ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext6.xml"); + DruidDataSource druidDataSource = applicationContext.getBean("dataSource", DruidDataSource.class); + System.out.println(druidDataSource); + } +} diff --git a/spring_ioc_02/.gitignore b/spring_ioc_02/.gitignore new file mode 100644 index 0000000..5ff6309 --- /dev/null +++ b/spring_ioc_02/.gitignore @@ -0,0 +1,38 @@ +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### IntelliJ IDEA ### +.idea/modules.xml +.idea/jarRepositories.xml +.idea/compiler.xml +.idea/libraries/ +*.iws +*.iml +*.ipr + +### Eclipse ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ + +### Mac OS ### +.DS_Store \ No newline at end of file diff --git a/spring_ioc_02/pom.xml b/spring_ioc_02/pom.xml new file mode 100644 index 0000000..ee323c8 --- /dev/null +++ b/spring_ioc_02/pom.xml @@ -0,0 +1,31 @@ + + + 4.0.0 + + org.example + spring_ioc_02 + 1.0-SNAPSHOT + + + 17 + 17 + UTF-8 + + + + + org.springframework + spring-context + 6.0.11 + + + + junit + junit + 4.13.2 + test + + + \ No newline at end of file diff --git a/spring_ioc_02/src/main/java/com/msb/bean/Student.java b/spring_ioc_02/src/main/java/com/msb/bean/Student.java new file mode 100644 index 0000000..a662b8f --- /dev/null +++ b/spring_ioc_02/src/main/java/com/msb/bean/Student.java @@ -0,0 +1,11 @@ +package com.msb.bean; + +import org.springframework.stereotype.Service; + +@Service +public class Student { + @Override + public String toString() { + return "Student{}"; + } +} diff --git a/spring_ioc_02/src/main/java/com/msb/bean/User.java b/spring_ioc_02/src/main/java/com/msb/bean/User.java new file mode 100644 index 0000000..c63ac6a --- /dev/null +++ b/spring_ioc_02/src/main/java/com/msb/bean/User.java @@ -0,0 +1,12 @@ +package com.msb.bean; + + +import org.springframework.stereotype.Component; + +@Component +public class User { + @Override + public String toString() { + return "User{}"; + } +} diff --git a/spring_ioc_02/src/main/java/com/msb/config/SpringConfig.java b/spring_ioc_02/src/main/java/com/msb/config/SpringConfig.java new file mode 100644 index 0000000..b130cc1 --- /dev/null +++ b/spring_ioc_02/src/main/java/com/msb/config/SpringConfig.java @@ -0,0 +1,9 @@ +package com.msb.config; + +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.PropertySource; + +@ComponentScan(basePackages = "com.msb") +@PropertySource("classpath:demo.properties") +public class SpringConfig { +} diff --git a/spring_ioc_02/src/main/java/com/msb/controller/UserController.java b/spring_ioc_02/src/main/java/com/msb/controller/UserController.java new file mode 100644 index 0000000..fda8dde --- /dev/null +++ b/spring_ioc_02/src/main/java/com/msb/controller/UserController.java @@ -0,0 +1,7 @@ +package com.msb.controller; + +import org.springframework.stereotype.Controller; + +@Controller +public class UserController { +} diff --git a/spring_ioc_02/src/main/java/com/msb/dao/UserDao.java b/spring_ioc_02/src/main/java/com/msb/dao/UserDao.java new file mode 100644 index 0000000..6ca96fa --- /dev/null +++ b/spring_ioc_02/src/main/java/com/msb/dao/UserDao.java @@ -0,0 +1,5 @@ +package com.msb.dao; + +public interface UserDao { + void add(); +} diff --git a/spring_ioc_02/src/main/java/com/msb/dao/impl/UserDaoImplA.java b/spring_ioc_02/src/main/java/com/msb/dao/impl/UserDaoImplA.java new file mode 100644 index 0000000..a7fd492 --- /dev/null +++ b/spring_ioc_02/src/main/java/com/msb/dao/impl/UserDaoImplA.java @@ -0,0 +1,12 @@ +package com.msb.dao.impl; + +import com.msb.dao.UserDao; +import org.springframework.stereotype.Repository; + +@Repository +public class UserDaoImplA implements UserDao { + @Override + public void add(){ + System.out.println("UserDaoImplA add ...."); + } +} diff --git a/spring_ioc_02/src/main/java/com/msb/dao/impl/UserDaoImplB.java b/spring_ioc_02/src/main/java/com/msb/dao/impl/UserDaoImplB.java new file mode 100644 index 0000000..4f72223 --- /dev/null +++ b/spring_ioc_02/src/main/java/com/msb/dao/impl/UserDaoImplB.java @@ -0,0 +1,12 @@ +package com.msb.dao.impl; + +import com.msb.dao.UserDao; +import org.springframework.stereotype.Repository; + +@Repository +public class UserDaoImplB implements UserDao { + @Override + public void add(){ + System.out.println("UserDaoImplB add ...."); + } +} diff --git a/spring_ioc_02/src/main/java/com/msb/service/UserService.java b/spring_ioc_02/src/main/java/com/msb/service/UserService.java new file mode 100644 index 0000000..dcb68ec --- /dev/null +++ b/spring_ioc_02/src/main/java/com/msb/service/UserService.java @@ -0,0 +1,5 @@ +package com.msb.service; + +public interface UserService { + void add(); +} diff --git a/spring_ioc_02/src/main/java/com/msb/service/impl/UserServiceImpl.java b/spring_ioc_02/src/main/java/com/msb/service/impl/UserServiceImpl.java new file mode 100644 index 0000000..6104bfc --- /dev/null +++ b/spring_ioc_02/src/main/java/com/msb/service/impl/UserServiceImpl.java @@ -0,0 +1,34 @@ +package com.msb.service.impl; + +import com.msb.dao.UserDao; +import com.msb.service.UserService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +@Service +public class UserServiceImpl implements UserService { + + @Autowired + @Qualifier("userDaoImplA") + private UserDao userDao; + + + // 普通数据类型的属性赋值 8+String + @Value("${name}") + private String name; + @Value("${gender}") + private String gender; + @Value("${age}") + private Integer age; + + @Override + public void add(){ + System.out.println("userServiceImpl add()....."); + userDao.add(); + System.out.println(name); + System.out.println(gender); + System.out.println(age); + } +} diff --git a/spring_ioc_02/src/main/resources/applicationContext.xml b/spring_ioc_02/src/main/resources/applicationContext.xml new file mode 100644 index 0000000..3752a8f --- /dev/null +++ b/spring_ioc_02/src/main/resources/applicationContext.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/spring_ioc_02/src/main/resources/applicationContext1.xml b/spring_ioc_02/src/main/resources/applicationContext1.xml new file mode 100644 index 0000000..64c97b8 --- /dev/null +++ b/spring_ioc_02/src/main/resources/applicationContext1.xml @@ -0,0 +1,14 @@ + + + + + + + \ No newline at end of file diff --git a/spring_ioc_02/src/main/resources/demo.properties b/spring_ioc_02/src/main/resources/demo.properties new file mode 100644 index 0000000..3d13ca3 --- /dev/null +++ b/spring_ioc_02/src/main/resources/demo.properties @@ -0,0 +1,3 @@ +name=\u5C0F\u660E +gender=\u7537 +age=31 \ No newline at end of file diff --git a/spring_ioc_02/src/test/java/com/msb/Test1.java b/spring_ioc_02/src/test/java/com/msb/Test1.java new file mode 100644 index 0000000..4dee40b --- /dev/null +++ b/spring_ioc_02/src/test/java/com/msb/Test1.java @@ -0,0 +1,20 @@ +package com.msb; + +import com.msb.bean.Student; +import com.msb.bean.User; +import org.junit.Test; +import org.springframework.context.ApplicationContext; +import org.springframework.context.support.ClassPathXmlApplicationContext; + +public class Test1 { + + @Test + public void testGetBean(){ + ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml"); + User user = applicationContext.getBean("user", User.class); + System.out.println(user); + + Student student = applicationContext.getBean("student", Student.class); + System.out.println(student); + } +} diff --git a/spring_ioc_02/src/test/java/com/msb/Test2.java b/spring_ioc_02/src/test/java/com/msb/Test2.java new file mode 100644 index 0000000..0562e32 --- /dev/null +++ b/spring_ioc_02/src/test/java/com/msb/Test2.java @@ -0,0 +1,28 @@ +package com.msb; + +import com.msb.config.SpringConfig; +import com.msb.service.UserService; +import com.msb.service.impl.UserServiceImpl; +import org.junit.Test; +import org.springframework.context.ApplicationContext; +import org.springframework.context.annotation.AnnotationConfigApplicationContext; +import org.springframework.context.support.ClassPathXmlApplicationContext; + +public class Test2 { + + @Test + public void testGetBean(){ + ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext1.xml"); + UserService userService = applicationContext.getBean("userServiceImpl", UserServiceImpl.class); + userService.add(); + } + + @Test + public void testGetBean2(){ + ApplicationContext applicationContext = new AnnotationConfigApplicationContext(SpringConfig.class); + UserService userService = applicationContext.getBean("userServiceImpl", UserServiceImpl.class); + userService.add(); + } + + +} diff --git a/spring_jbdctemplate_01/.gitignore b/spring_jbdctemplate_01/.gitignore new file mode 100644 index 0000000..5ff6309 --- /dev/null +++ b/spring_jbdctemplate_01/.gitignore @@ -0,0 +1,38 @@ +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### IntelliJ IDEA ### +.idea/modules.xml +.idea/jarRepositories.xml +.idea/compiler.xml +.idea/libraries/ +*.iws +*.iml +*.ipr + +### Eclipse ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ + +### Mac OS ### +.DS_Store \ No newline at end of file diff --git a/spring_jbdctemplate_01/pom.xml b/spring_jbdctemplate_01/pom.xml new file mode 100644 index 0000000..e9f5afb --- /dev/null +++ b/spring_jbdctemplate_01/pom.xml @@ -0,0 +1,87 @@ + + + 4.0.0 + + org.example + spring_jbdctemplate_01 + 1.0-SNAPSHOT + + + 17 + 17 + UTF-8 + + + + + org.springframework + spring-context + 6.0.11 + + + + org.springframework + spring-aspects + 6.0.11 + + + + aopalliance + aopalliance + 1.0 + + + + com.alibaba + druid + 1.1.10 + + + + mysql + mysql-connector-java + 8.0.28 + + + + org.springframework + spring-jdbc + 6.0.11 + + + + org.springframework + spring-tx + 6.0.11 + + + + org.springframework + spring-orm + 6.0.11 + + + + commons-logging + commons-logging + 1.2 + + + + junit + junit + 4.13.2 + test + + + + org.projectlombok + lombok + 1.18.12 + provided + + + + \ No newline at end of file diff --git a/spring_jbdctemplate_01/src/main/java/com/msb/dao/DeptDao.java b/spring_jbdctemplate_01/src/main/java/com/msb/dao/DeptDao.java new file mode 100644 index 0000000..020e067 --- /dev/null +++ b/spring_jbdctemplate_01/src/main/java/com/msb/dao/DeptDao.java @@ -0,0 +1,13 @@ +package com.msb.dao; + +import com.msb.pojo.Dept; + +import java.util.List; + +public interface DeptDao { + int[] batchAdd(List deptList); + + int[] batchUpdate(List deptList); + + int[] batchDelete(List deptnos); +} diff --git a/spring_jbdctemplate_01/src/main/java/com/msb/dao/StudentDao.java b/spring_jbdctemplate_01/src/main/java/com/msb/dao/StudentDao.java new file mode 100644 index 0000000..b89fe56 --- /dev/null +++ b/spring_jbdctemplate_01/src/main/java/com/msb/dao/StudentDao.java @@ -0,0 +1,19 @@ +package com.msb.dao; + +import com.msb.pojo.Student; + +import java.util.List; + +public interface StudentDao { + int findStuCount(); + + Student findStuById(int id); + + List findStuByGrade(int grade); + + int createStudent(Student student); + + int updateStudent(Student student); + + int deleteById(int id); +} diff --git a/spring_jbdctemplate_01/src/main/java/com/msb/dao/impl/DeptDaoImpl.java b/spring_jbdctemplate_01/src/main/java/com/msb/dao/impl/DeptDaoImpl.java new file mode 100644 index 0000000..796b36e --- /dev/null +++ b/spring_jbdctemplate_01/src/main/java/com/msb/dao/impl/DeptDaoImpl.java @@ -0,0 +1,73 @@ +package com.msb.dao.impl; + +import com.msb.dao.DeptDao; +import com.msb.pojo.Dept; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Repository; + +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; + +@Repository +public class DeptDaoImpl implements DeptDao { + private final JdbcTemplate jdbcTemplate; + + public DeptDaoImpl(JdbcTemplate jdbcTemplate) { + this.jdbcTemplate = jdbcTemplate; + } + + /** + * 批量添加部门 + * @param deptList + * @return + */ + @Override + public int[] batchAdd(List deptList) { + String sql = "insert into dept values(DEFAULT, ?, ?)"; + + List args = new ArrayList<>(); + for (Dept dept: deptList) { + Object[] arg = new Object[]{dept.getDname(), dept.getLoc()}; + args.add(arg); + } + + return jdbcTemplate.batchUpdate(sql, args); + } + + /** + * 批量更新数据 + * @param deptList + * @return + */ + @Override + public int[] batchUpdate(List deptList) { + String sql = "update dept set dname=?, loc=? where deptno=?"; + + List args = new ArrayList<>(); + for (Dept dept: deptList) { + Object[] arg = new Object[]{dept.getDname(), dept.getLoc(), dept.getDeptno()}; + args.add(arg); + } + + return jdbcTemplate.batchUpdate(sql, args); + } + + /** + * 批量删除部门 + * @param deptnos + * @return + */ + @Override + public int[] batchDelete(List deptnos) { + String sql = "delete from dept where deptno=?"; + + List args = new ArrayList<>(); + for (Integer deptno: deptnos) { + Object[] arg = new Object[]{deptno}; + args.add(arg); + } + + return jdbcTemplate.batchUpdate(sql, args); + } +} diff --git a/spring_jbdctemplate_01/src/main/java/com/msb/dao/impl/StudentDaoImpl.java b/spring_jbdctemplate_01/src/main/java/com/msb/dao/impl/StudentDaoImpl.java new file mode 100644 index 0000000..589dd1c --- /dev/null +++ b/spring_jbdctemplate_01/src/main/java/com/msb/dao/impl/StudentDaoImpl.java @@ -0,0 +1,98 @@ +package com.msb.dao.impl; + + +import com.msb.dao.StudentDao; +import com.msb.pojo.Student; +import org.springframework.jdbc.core.BeanPropertyRowMapper; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +public class StudentDaoImpl implements StudentDao { + + private final JdbcTemplate jdbcTemplate; + + public StudentDaoImpl(JdbcTemplate jdbcTemplate){ + this.jdbcTemplate = jdbcTemplate; + } + + /** + * 查询数据库条数 + * queryForObject(sql, Integer.class) + * @return + */ + @Override + public int findStuCount() { + String sql = "select count(*) from students"; + + return jdbcTemplate.queryForObject(sql, Integer.class); + } + + /** + * 查询某条记录 + * + * @param id + * @return + */ + @Override + public Student findStuById(int id) { + String sql = "select * from students where id = ?"; + BeanPropertyRowMapper rowMapper = new BeanPropertyRowMapper<>(Student.class); + + return jdbcTemplate.queryForObject(sql, rowMapper, id); + } + + /** + * 查询多条记录的集合 + * @param grade + * @return + */ + @Override + public List findStuByGrade(int grade) { + String sql = "select * from students where grade = ?"; + BeanPropertyRowMapper rowMapper = new BeanPropertyRowMapper<>(Student.class); + + return jdbcTemplate.query(sql, rowMapper, grade); + } + + /** + * 添加记录 + * @param student + * @return + */ + @Override + public int createStudent(Student student) { + String sql = "insert into students values(DEFAULT, ?, ?, ?,?)"; + Object[] args = new Object[]{ + student.getName(),student.getGender(),student.getGrade(),student.getScore() + }; + return jdbcTemplate.update(sql, args); + } + + /** + * 更新数据 + * @param student + * @return + */ + @Override + public int updateStudent(Student student) { + String sql = "update students set name=?, gender=?,grade=?,score=? where id = ?"; + Object[] args = new Object[]{ + student.getName(),student.getGender(),student.getGrade(),student.getScore(), student.getId() + }; + return jdbcTemplate.update(sql, args); + } + + /** + * 删除记录 + * @param id + * @return + */ + @Override + public int deleteById(int id) { + String sql = "delete from students where id = ?"; + return jdbcTemplate.update(sql, id); + } +} diff --git a/spring_jbdctemplate_01/src/main/java/com/msb/pojo/Dept.java b/spring_jbdctemplate_01/src/main/java/com/msb/pojo/Dept.java new file mode 100644 index 0000000..95e83d0 --- /dev/null +++ b/spring_jbdctemplate_01/src/main/java/com/msb/pojo/Dept.java @@ -0,0 +1,14 @@ +package com.msb.pojo; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@NoArgsConstructor +@AllArgsConstructor +@Data +public class Dept { + private Integer deptno; + private String dname; + private String loc; +} diff --git a/spring_jbdctemplate_01/src/main/java/com/msb/pojo/Student.java b/spring_jbdctemplate_01/src/main/java/com/msb/pojo/Student.java new file mode 100644 index 0000000..bda3a6f --- /dev/null +++ b/spring_jbdctemplate_01/src/main/java/com/msb/pojo/Student.java @@ -0,0 +1,18 @@ +package com.msb.pojo; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class Student implements Serializable { + private Integer id; + private String name; + private Integer gender; + private Integer grade; + private Integer score; +} diff --git a/spring_jbdctemplate_01/src/main/java/com/msb/service/DeptService.java b/spring_jbdctemplate_01/src/main/java/com/msb/service/DeptService.java new file mode 100644 index 0000000..3cadaab --- /dev/null +++ b/spring_jbdctemplate_01/src/main/java/com/msb/service/DeptService.java @@ -0,0 +1,13 @@ +package com.msb.service; + +import com.msb.pojo.Dept; + +import java.util.List; + +public interface DeptService { + int[] batchAdd(List deptList); + + int[] batchUpdate(List deptList); + + int[] batchDelete(List deptnos); +} diff --git a/spring_jbdctemplate_01/src/main/java/com/msb/service/StudentService.java b/spring_jbdctemplate_01/src/main/java/com/msb/service/StudentService.java new file mode 100644 index 0000000..f84ebfb --- /dev/null +++ b/spring_jbdctemplate_01/src/main/java/com/msb/service/StudentService.java @@ -0,0 +1,19 @@ +package com.msb.service; + +import com.msb.pojo.Student; + +import java.util.List; + +public interface StudentService { + int findStuCount(); + + Student findStuById(int id); + + List findStuByGrade(int grade); + + int createStudent(Student student); + + int updateStudent(Student student); + + int deleteById(int id); +} diff --git a/spring_jbdctemplate_01/src/main/java/com/msb/service/impl/DeptServiceImpl.java b/spring_jbdctemplate_01/src/main/java/com/msb/service/impl/DeptServiceImpl.java new file mode 100644 index 0000000..82c7f6a --- /dev/null +++ b/spring_jbdctemplate_01/src/main/java/com/msb/service/impl/DeptServiceImpl.java @@ -0,0 +1,32 @@ +package com.msb.service.impl; + +import com.msb.dao.DeptDao; +import com.msb.pojo.Dept; +import com.msb.service.DeptService; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class DeptServiceImpl implements DeptService { + private final DeptDao deptDao; + + public DeptServiceImpl(DeptDao deptDao){ + this.deptDao = deptDao; + } + + @Override + public int[] batchAdd(List deptList) { + return deptDao.batchAdd(deptList); + } + + @Override + public int[] batchUpdate(List deptList) { + return deptDao.batchUpdate(deptList); + } + + @Override + public int[] batchDelete(List deptnos) { + return deptDao.batchDelete(deptnos); + } +} diff --git a/spring_jbdctemplate_01/src/main/java/com/msb/service/impl/StudentServiceImpl.java b/spring_jbdctemplate_01/src/main/java/com/msb/service/impl/StudentServiceImpl.java new file mode 100644 index 0000000..1dc329a --- /dev/null +++ b/spring_jbdctemplate_01/src/main/java/com/msb/service/impl/StudentServiceImpl.java @@ -0,0 +1,47 @@ +package com.msb.service.impl; + +import com.msb.dao.StudentDao; +import com.msb.pojo.Student; +import com.msb.service.StudentService; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class StudentServiceImpl implements StudentService { + private final StudentDao studentDao; + + public StudentServiceImpl(StudentDao studentDao){ + this.studentDao = studentDao; + } + + @Override + public int findStuCount() { + return studentDao.findStuCount(); + } + + @Override + public Student findStuById(int id) { + return studentDao.findStuById(id); + } + + @Override + public List findStuByGrade(int grade) { + return studentDao.findStuByGrade(grade); + } + + @Override + public int createStudent(Student student) { + return studentDao.createStudent(student); + } + + @Override + public int updateStudent(Student student) { + return studentDao.updateStudent(student); + } + + @Override + public int deleteById(int id) { + return studentDao.deleteById(id); + } +} diff --git a/spring_jbdctemplate_01/src/main/resources/applicationContext.xml b/spring_jbdctemplate_01/src/main/resources/applicationContext.xml new file mode 100644 index 0000000..5dee897 --- /dev/null +++ b/spring_jbdctemplate_01/src/main/resources/applicationContext.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + diff --git a/spring_jbdctemplate_01/src/main/resources/jdbc.properties b/spring_jbdctemplate_01/src/main/resources/jdbc.properties new file mode 100644 index 0000000..4dcfa8d --- /dev/null +++ b/spring_jbdctemplate_01/src/main/resources/jdbc.properties @@ -0,0 +1,4 @@ +jdbc_username=root +jdbc_password=12345678 +jdbc_driver=com.mysql.cj.jdbc.Driver +jdbc_url=jdbc:mysql://localhost:3306/learnjdbc?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true \ No newline at end of file diff --git a/spring_jbdctemplate_01/src/test/java/com/msb/test/TestDept.java b/spring_jbdctemplate_01/src/test/java/com/msb/test/TestDept.java new file mode 100644 index 0000000..ac46d86 --- /dev/null +++ b/spring_jbdctemplate_01/src/test/java/com/msb/test/TestDept.java @@ -0,0 +1,49 @@ +package com.msb.test; + +import com.msb.pojo.Dept; +import com.msb.service.DeptService; +import com.msb.service.StudentService; +import org.junit.Test; +import org.springframework.context.ApplicationContext; +import org.springframework.context.support.ClassPathXmlApplicationContext; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +public class TestDept { + @Test + public void testBatchAdd(){ + ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml"); + DeptService deptService = applicationContext.getBean(DeptService.class); + List deptList = new ArrayList<>(); + for (int i = 0; i < 10; i++) { + deptList.add(new Dept(null, "cname"+i, "loc"+i)); + } + int[] rows= deptService.batchAdd(deptList); + System.out.println(Arrays.toString(rows)); + } + @Test + public void testBatchUpdate(){ + ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml"); + DeptService deptService = applicationContext.getBean(DeptService.class); + List deptList = new ArrayList<>(); + for (int i = 31; i <= 40; i++) { + deptList.add(new Dept(i, "newName", "newLoc")); + } + int[] rows= deptService.batchUpdate(deptList); + System.out.println(Arrays.toString(rows)); + } + + @Test + public void testBatchDelete(){ + ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml"); + DeptService deptService = applicationContext.getBean(DeptService.class); + List deptnos = new ArrayList<>(); + for (int i = 31; i <= 40; i++) { + deptnos.add(i); + } + int[] rows= deptService.batchDelete(deptnos); + System.out.println(Arrays.toString(rows)); + } +} diff --git a/spring_jbdctemplate_01/src/test/java/com/msb/test/TestStudent.java b/spring_jbdctemplate_01/src/test/java/com/msb/test/TestStudent.java new file mode 100644 index 0000000..80cffc5 --- /dev/null +++ b/spring_jbdctemplate_01/src/test/java/com/msb/test/TestStudent.java @@ -0,0 +1,38 @@ +package com.msb.test; + +import com.msb.pojo.Dept; +import com.msb.pojo.Student; +import com.msb.service.StudentService; +import org.junit.Test; +import org.springframework.context.ApplicationContext; +import org.springframework.context.support.ClassPathXmlApplicationContext; + +import java.util.ArrayList; +import java.util.List; + +public class TestStudent { + + @Test + public void testStudentCurd(){ + ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml"); + StudentService studentService = applicationContext.getBean(StudentService.class); + int rows = studentService.findStuCount(); + System.out.println(rows); + + Student student = studentService.findStuById(1); + System.out.println(student); + + List students = studentService.findStuByGrade(1); + students.forEach(System.out::println); + +// Student newStu = new Student(null, "demo", 1, 1, 90); +// int row = studentService.createStudent(newStu); +// System.out.println(row); + +// int row = studentService.updateStudent(new Student(13, "张三", 1, 3, 90)); +// System.out.println(row); + + int row = studentService.deleteById(14); + System.out.println(row); + } +}