From d4d4a67f01a33ebb76cef77ff5f5f4f259a799ad Mon Sep 17 00:00:00 2001 From: sxyx2008 Date: Tue, 22 Jul 2014 10:55:21 +0800 Subject: [PATCH] spring data no xml example --- pom.xml | 3 +- spring-data-example/.gitignore | 2976 +++++++++++++++++ spring-data-example/pom.xml | 90 + .../spring/data/example/config/WebConfig.java | 102 + .../data/example/config/WebInitializer.java | 42 + .../example/controller/EmpController.java | 110 + .../example/controller/WelcomeController.java | 14 + .../spring/data/example/entities/Dept.java | 62 + .../spring/data/example/entities/Emp.java | 69 + .../spring/data/example/entities/Post.java | 57 + .../data/example/exception/EmpNotFound.java | 5 + .../example/repositories/EmpRepository.java | 9 + .../example/repositories/PostRepository.java | 9 + .../data/example/service/EmpService.java | 19 + .../data/example/service/PostService.java | 18 + .../example/service/impl/EmpServiceImpl.java | 59 + .../example/service/impl/PostServiceImpl.java | 57 + .../data/example/validation/EmpValidator.java | 24 + .../src/main/resources/application.properties | 13 + .../main/resources/i18n/messages.properties | 2 + .../src/main/resources/log4j.properties | 6 + .../main/webapp/WEB-INF/pages/emp-edit.jsp | 34 + .../main/webapp/WEB-INF/pages/emp-list.jsp | 33 + .../src/main/webapp/WEB-INF/pages/emp-new.jsp | 34 + .../src/main/webapp/WEB-INF/pages/index.jsp | 17 + .../src/main/webapp/WEB-INF/web.xml | 9 + .../data/example/EmpRepositoryTest.java | 121 + .../data/example/PostRepositoryTest.java | 81 + 28 files changed, 4074 insertions(+), 1 deletion(-) create mode 100644 spring-data-example/.gitignore create mode 100644 spring-data-example/pom.xml create mode 100644 spring-data-example/src/main/java/net/aimeizi/spring/data/example/config/WebConfig.java create mode 100644 spring-data-example/src/main/java/net/aimeizi/spring/data/example/config/WebInitializer.java create mode 100644 spring-data-example/src/main/java/net/aimeizi/spring/data/example/controller/EmpController.java create mode 100644 spring-data-example/src/main/java/net/aimeizi/spring/data/example/controller/WelcomeController.java create mode 100644 spring-data-example/src/main/java/net/aimeizi/spring/data/example/entities/Dept.java create mode 100644 spring-data-example/src/main/java/net/aimeizi/spring/data/example/entities/Emp.java create mode 100644 spring-data-example/src/main/java/net/aimeizi/spring/data/example/entities/Post.java create mode 100644 spring-data-example/src/main/java/net/aimeizi/spring/data/example/exception/EmpNotFound.java create mode 100644 spring-data-example/src/main/java/net/aimeizi/spring/data/example/repositories/EmpRepository.java create mode 100644 spring-data-example/src/main/java/net/aimeizi/spring/data/example/repositories/PostRepository.java create mode 100644 spring-data-example/src/main/java/net/aimeizi/spring/data/example/service/EmpService.java create mode 100644 spring-data-example/src/main/java/net/aimeizi/spring/data/example/service/PostService.java create mode 100644 spring-data-example/src/main/java/net/aimeizi/spring/data/example/service/impl/EmpServiceImpl.java create mode 100644 spring-data-example/src/main/java/net/aimeizi/spring/data/example/service/impl/PostServiceImpl.java create mode 100644 spring-data-example/src/main/java/net/aimeizi/spring/data/example/validation/EmpValidator.java create mode 100644 spring-data-example/src/main/resources/application.properties create mode 100644 spring-data-example/src/main/resources/i18n/messages.properties create mode 100644 spring-data-example/src/main/resources/log4j.properties create mode 100644 spring-data-example/src/main/webapp/WEB-INF/pages/emp-edit.jsp create mode 100644 spring-data-example/src/main/webapp/WEB-INF/pages/emp-list.jsp create mode 100644 spring-data-example/src/main/webapp/WEB-INF/pages/emp-new.jsp create mode 100644 spring-data-example/src/main/webapp/WEB-INF/pages/index.jsp create mode 100644 spring-data-example/src/main/webapp/WEB-INF/web.xml create mode 100644 spring-data-example/src/test/java/net/aimeizi/spring/data/example/EmpRepositoryTest.java create mode 100644 spring-data-example/src/test/java/net/aimeizi/spring/data/example/PostRepositoryTest.java diff --git a/pom.xml b/pom.xml index 6878a40..1430547 100644 --- a/pom.xml +++ b/pom.xml @@ -94,6 +94,8 @@ hibernate-tutorials commons-dbutils-tutorial spring-jdbc-tutorials + spring-data-example + spring-ibatis-example @@ -417,7 +419,6 @@ true false 2.0 - .settings/org.eclipse.core.resources.prefs diff --git a/spring-data-example/.gitignore b/spring-data-example/.gitignore new file mode 100644 index 0000000..d247111 --- /dev/null +++ b/spring-data-example/.gitignore @@ -0,0 +1,2976 @@ +/target +/bin +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target +/target diff --git a/spring-data-example/pom.xml b/spring-data-example/pom.xml new file mode 100644 index 0000000..1b44e96 --- /dev/null +++ b/spring-data-example/pom.xml @@ -0,0 +1,90 @@ + + + 4.0.0 + + net.aimeizi + maven-framework-project + 1.0.0 + + spring-data-example + war + + + + maven-compiler-plugin + 2.3.2 + + 1.6 + 1.6 + + + + org.apache.tomcat.maven + tomcat7-maven-plugin + 2.2 + + + + + + log4j + log4j + 1.2.16 + + + + javax.servlet + javax.servlet-api + 3.1.0 + provided + + + + jstl + jstl + 1.2 + + + + org.springframework + spring-test + 3.2.0.RELEASE + + + org.springframework + spring-context-support + 3.2.0.RELEASE + + + org.hibernate + hibernate-entitymanager + 4.1.9.Final + + + org.hibernate + hibernate-validator + 4.2.0.Final + + + junit + junit + 4.11 + + + mysql + mysql-connector-java + 5.1.22 + + + com.h2database + h2 + 1.3.170 + + + org.springframework.data + spring-data-jpa + 1.2.0.RELEASE + + + diff --git a/spring-data-example/src/main/java/net/aimeizi/spring/data/example/config/WebConfig.java b/spring-data-example/src/main/java/net/aimeizi/spring/data/example/config/WebConfig.java new file mode 100644 index 0000000..1a5680f --- /dev/null +++ b/spring-data-example/src/main/java/net/aimeizi/spring/data/example/config/WebConfig.java @@ -0,0 +1,102 @@ +package net.aimeizi.spring.data.example.config; + +import java.util.Properties; + +import javax.annotation.Resource; +import javax.sql.DataSource; + +import org.hibernate.ejb.HibernatePersistence; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.PropertySource; +import org.springframework.context.support.ResourceBundleMessageSource; +import org.springframework.core.env.Environment; +import org.springframework.data.jpa.repository.config.EnableJpaRepositories; +import org.springframework.jdbc.datasource.DriverManagerDataSource; +import org.springframework.orm.jpa.JpaTransactionManager; +import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; +import org.springframework.transaction.annotation.EnableTransactionManagement; +import org.springframework.web.servlet.config.annotation.EnableWebMvc; +import org.springframework.web.servlet.view.JstlView; +import org.springframework.web.servlet.view.UrlBasedViewResolver; + +@Configuration +@EnableWebMvc +@EnableTransactionManagement +@ComponentScan("net.aimeizi.spring.data.example") +@PropertySource("classpath:application.properties") +@EnableJpaRepositories("net.aimeizi.spring.data.example.repositories") +public class WebConfig { + + + private static final String PROPERTY_NAME_DATABASE_DRIVER = "jdbc.driver"; + private static final String PROPERTY_NAME_DATABASE_PASSWORD = "jdbc.password"; + private static final String PROPERTY_NAME_DATABASE_URL = "jdbc.url"; + private static final String PROPERTY_NAME_DATABASE_USERNAME = "jdbc.username"; + + private static final String PROPERTY_NAME_HIBERNATE_DIALECT = "hibernate.dialect"; + private static final String PROPERTY_NAME_HIBERNATE_SHOW_SQL = "hibernate.show_sql"; + private static final String PROPERTY_NAME_HIBERNATE_HBM2DDL = "hibernate.hbm2ddl.auto"; + private static final String PROPERTY_NAME_ENTITYMANAGER_PACKAGES_TO_SCAN = "entitymanager.packages.to.scan"; + + @Resource + private Environment env; + + @Bean + public DataSource dataSource() { + DriverManagerDataSource dataSource = new DriverManagerDataSource(); + + dataSource.setDriverClassName(env.getRequiredProperty(PROPERTY_NAME_DATABASE_DRIVER)); + dataSource.setUrl(env.getRequiredProperty(PROPERTY_NAME_DATABASE_URL)); + dataSource.setUsername(env.getRequiredProperty(PROPERTY_NAME_DATABASE_USERNAME)); + dataSource.setPassword(env.getRequiredProperty(PROPERTY_NAME_DATABASE_PASSWORD)); + + return dataSource; + } + + @Bean + public LocalContainerEntityManagerFactoryBean entityManagerFactory() { + LocalContainerEntityManagerFactoryBean entityManagerFactoryBean = new LocalContainerEntityManagerFactoryBean(); + entityManagerFactoryBean.setDataSource(dataSource()); + entityManagerFactoryBean.setPersistenceProviderClass(HibernatePersistence.class); + entityManagerFactoryBean.setPackagesToScan(env.getRequiredProperty(PROPERTY_NAME_ENTITYMANAGER_PACKAGES_TO_SCAN)); + + entityManagerFactoryBean.setJpaProperties(hibProperties()); + + return entityManagerFactoryBean; + } + + private Properties hibProperties() { + Properties properties = new Properties(); + properties.put(PROPERTY_NAME_HIBERNATE_DIALECT, env.getRequiredProperty(PROPERTY_NAME_HIBERNATE_DIALECT)); + properties.put(PROPERTY_NAME_HIBERNATE_SHOW_SQL, env.getRequiredProperty(PROPERTY_NAME_HIBERNATE_SHOW_SQL)); + properties.put(PROPERTY_NAME_HIBERNATE_HBM2DDL, env.getRequiredProperty(PROPERTY_NAME_HIBERNATE_HBM2DDL)); + return properties; + } + + @Bean + public JpaTransactionManager transactionManager() { + JpaTransactionManager transactionManager = new JpaTransactionManager(); + transactionManager.setEntityManagerFactory(entityManagerFactory().getObject()); + return transactionManager; + } + + @Bean + public UrlBasedViewResolver setupViewResolver() { + UrlBasedViewResolver resolver = new UrlBasedViewResolver(); + resolver.setPrefix("/WEB-INF/pages/"); + resolver.setSuffix(".jsp"); + resolver.setViewClass(JstlView.class); + return resolver; + } + + @Bean + public ResourceBundleMessageSource messageSource() { + ResourceBundleMessageSource source = new ResourceBundleMessageSource(); + source.setBasename(env.getRequiredProperty("message.source.basename")); + source.setUseCodeAsDefaultMessage(true); + return source; + } + +} diff --git a/spring-data-example/src/main/java/net/aimeizi/spring/data/example/config/WebInitializer.java b/spring-data-example/src/main/java/net/aimeizi/spring/data/example/config/WebInitializer.java new file mode 100644 index 0000000..16d676b --- /dev/null +++ b/spring-data-example/src/main/java/net/aimeizi/spring/data/example/config/WebInitializer.java @@ -0,0 +1,42 @@ +package net.aimeizi.spring.data.example.config; + +import java.util.EnumSet; + +import javax.servlet.DispatcherType; +import javax.servlet.FilterRegistration; +import javax.servlet.ServletContext; +import javax.servlet.ServletException; +import javax.servlet.ServletRegistration; + +import org.springframework.web.WebApplicationInitializer; +import org.springframework.web.context.ContextLoaderListener; +import org.springframework.web.context.support.AnnotationConfigWebApplicationContext; +import org.springframework.web.servlet.DispatcherServlet; + +public class WebInitializer implements WebApplicationInitializer { + + @Override + public void onStartup(ServletContext servletContext) throws ServletException { + + AnnotationConfigWebApplicationContext applicationContext = new AnnotationConfigWebApplicationContext(); + + applicationContext.register(WebConfig.class); + + servletContext.addListener(new ContextLoaderListener(applicationContext)); + + applicationContext.setServletContext(servletContext); + + FilterRegistration.Dynamic filter = servletContext.addFilter("characterEncodingFilter", org.springframework.web.filter.CharacterEncodingFilter.class); + filter.setInitParameter("encoding", "utf-8"); + filter.setInitParameter("forceEncoding", "true"); + filter.addMappingForUrlPatterns(EnumSet.of(DispatcherType.REQUEST), true, "/*"); + + + ServletRegistration.Dynamic dispatcher = servletContext.addServlet("dispatcherServlet", new DispatcherServlet(applicationContext)); + + dispatcher.setLoadOnStartup(1); + + dispatcher.addMapping("/"); + } + +} diff --git a/spring-data-example/src/main/java/net/aimeizi/spring/data/example/controller/EmpController.java b/spring-data-example/src/main/java/net/aimeizi/spring/data/example/controller/EmpController.java new file mode 100644 index 0000000..25450ae --- /dev/null +++ b/spring-data-example/src/main/java/net/aimeizi/spring/data/example/controller/EmpController.java @@ -0,0 +1,110 @@ +package net.aimeizi.spring.data.example.controller; + +import java.util.List; + +import javax.validation.Valid; + +import net.aimeizi.spring.data.example.entities.Emp; +import net.aimeizi.spring.data.example.exception.EmpNotFound; +import net.aimeizi.spring.data.example.service.EmpService; +import net.aimeizi.spring.data.example.validation.EmpValidator; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.WebDataBinder; +import org.springframework.web.bind.annotation.InitBinder; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.servlet.ModelAndView; +import org.springframework.web.servlet.mvc.support.RedirectAttributes; + +@Controller +@RequestMapping("/emp") +public class EmpController { + + @Autowired + private EmpService empService; + +// @Autowired +// private EmpValidator empValidator; + +// @InitBinder +// private void initBinder(WebDataBinder binder) { +// binder.setValidator(empValidator); +// } + + @RequestMapping(value="/create", method=RequestMethod.GET) + public ModelAndView newEmpPage() { + ModelAndView mav = new ModelAndView("emp-new", "emp", new Emp()); + return mav; + } + + @RequestMapping(value="/create", method=RequestMethod.POST) + public ModelAndView createNewEmp(@ModelAttribute @Valid Emp emp, + BindingResult result, + final RedirectAttributes redirectAttributes) { + + if (result.hasErrors()) + return new ModelAndView("emp-new"); + + ModelAndView mav = new ModelAndView(); + String message = "New emp "+emp.getEmpname()+" was successfully created."; + + empService.save(emp); + mav.setViewName("redirect:/index.html"); + + redirectAttributes.addFlashAttribute("message", message); + return mav; + } + + @RequestMapping(value="/list", method=RequestMethod.GET) + public ModelAndView empListPage() { + ModelAndView mav = new ModelAndView("emp-list"); + List empList = empService.find(); + mav.addObject("empList", empList); + return mav; + } + + @RequestMapping(value="/edit/{id}", method=RequestMethod.GET) + public ModelAndView editEmpPage(@PathVariable Integer id) { + ModelAndView mav = new ModelAndView("emp-edit"); + Emp emp = empService.findOne(id); + mav.addObject("emp", emp); + return mav; + } + + @RequestMapping(value="/edit/{id}", method=RequestMethod.POST) + public ModelAndView editEmp(@ModelAttribute @Valid Emp emp, + BindingResult result, + @PathVariable Integer id, + final RedirectAttributes redirectAttributes) throws EmpNotFound { + emp.setEmpid(id); + if (result.hasErrors()) + return new ModelAndView("emp-edit"); + + ModelAndView mav = new ModelAndView("redirect:/index.html"); + String message = "Emp was successfully updated."; + + empService.update(emp); + + redirectAttributes.addFlashAttribute("message", message); + return mav; + } + + @RequestMapping(value="/delete/{id}", method=RequestMethod.GET) + public ModelAndView deleteEmp(@PathVariable Integer id, + final RedirectAttributes redirectAttributes) throws EmpNotFound { + + ModelAndView mav = new ModelAndView("redirect:/index.html"); + + Emp emp = empService.delete(empService.findOne(id)); + String message = "The emp "+emp.getEmpname()+" was successfully deleted."; + + redirectAttributes.addFlashAttribute("message", message); + return mav; + } + +} diff --git a/spring-data-example/src/main/java/net/aimeizi/spring/data/example/controller/WelcomeController.java b/spring-data-example/src/main/java/net/aimeizi/spring/data/example/controller/WelcomeController.java new file mode 100644 index 0000000..9b222db --- /dev/null +++ b/spring-data-example/src/main/java/net/aimeizi/spring/data/example/controller/WelcomeController.java @@ -0,0 +1,14 @@ +package net.aimeizi.spring.data.example.controller; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; + +@Controller +public class WelcomeController { + + @RequestMapping("index") + public String index(){ + return "index"; + } + +} diff --git a/spring-data-example/src/main/java/net/aimeizi/spring/data/example/entities/Dept.java b/spring-data-example/src/main/java/net/aimeizi/spring/data/example/entities/Dept.java new file mode 100644 index 0000000..8db05bd --- /dev/null +++ b/spring-data-example/src/main/java/net/aimeizi/spring/data/example/entities/Dept.java @@ -0,0 +1,62 @@ +package net.aimeizi.spring.data.example.entities; + +import java.util.HashSet; +import java.util.Set; + +import javax.persistence.CascadeType; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.OneToMany; +import javax.persistence.Table; + +@Entity +@Table +public class Dept { + + @Id + @GeneratedValue(strategy=GenerationType.AUTO) + private int deptid; + + private String deptname; + + private String deptphonenumber; + + @OneToMany(mappedBy="dept",cascade=CascadeType.ALL) + private Set emps = new HashSet(); + + public int getDeptid() { + return deptid; + } + + public void setDeptid(int deptid) { + this.deptid = deptid; + } + + public String getDeptname() { + return deptname; + } + + public void setDeptname(String deptname) { + this.deptname = deptname; + } + + public String getDeptphonenumber() { + return deptphonenumber; + } + + public void setDeptphonenumber(String deptphonenumber) { + this.deptphonenumber = deptphonenumber; + } + + public Set getEmps() { + return emps; + } + + public void setEmps(Set emps) { + this.emps = emps; + } + + +} diff --git a/spring-data-example/src/main/java/net/aimeizi/spring/data/example/entities/Emp.java b/spring-data-example/src/main/java/net/aimeizi/spring/data/example/entities/Emp.java new file mode 100644 index 0000000..6abfe98 --- /dev/null +++ b/spring-data-example/src/main/java/net/aimeizi/spring/data/example/entities/Emp.java @@ -0,0 +1,69 @@ +package net.aimeizi.spring.data.example.entities; + +import javax.persistence.CascadeType; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.Table; +import javax.validation.constraints.Size; + +import org.hibernate.validator.constraints.Email; +import org.hibernate.validator.constraints.NotEmpty; + +@Entity +@Table +public class Emp { + + @Id + @GeneratedValue(strategy=GenerationType.AUTO) + private int empid; + + @NotEmpty(message="please enter your emp empname.") + @Size(min=6,max=16,message="empname长度在6~16个字符之间.") + private String empname; + + @Email + @NotEmpty + private String empaddress; + + @ManyToOne(cascade={CascadeType.REFRESH,CascadeType.REMOVE,CascadeType.MERGE}) + @JoinColumn(name="deptid") + private Dept dept; + + public int getEmpid() { + return empid; + } + + public void setEmpid(int empid) { + this.empid = empid; + } + + public String getEmpname() { + return empname; + } + + public void setEmpname(String empname) { + this.empname = empname; + } + + public String getEmpaddress() { + return empaddress; + } + + public void setEmpaddress(String empaddress) { + this.empaddress = empaddress; + } + + public Dept getDept() { + return dept; + } + + public void setDept(Dept dept) { + this.dept = dept; + } + + +} diff --git a/spring-data-example/src/main/java/net/aimeizi/spring/data/example/entities/Post.java b/spring-data-example/src/main/java/net/aimeizi/spring/data/example/entities/Post.java new file mode 100644 index 0000000..e6a7dd8 --- /dev/null +++ b/spring-data-example/src/main/java/net/aimeizi/spring/data/example/entities/Post.java @@ -0,0 +1,57 @@ +package net.aimeizi.spring.data.example.entities; + +import java.util.Date; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Table; + +@Entity +@Table(name="POST") +public class Post { + + @Id + @GeneratedValue(strategy=GenerationType.AUTO) + @Column(name="POST_ID") + Integer postId; + + @Column(name="TITLE") + String title; + + @Column(name="POST_DATE") + Date postDate; + + public Integer getPostId() { + return postId; + } + + public void setPostId(Integer postId) { + this.postId = postId; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public Date getPostDate() { + return postDate; + } + + public void setPostDate(Date postDate) { + this.postDate = postDate; + } + + @Override + public String toString() { + return "Post [postId=" + postId + ", title=" + title + ", postDate=" + + postDate + "]"; + } + +} diff --git a/spring-data-example/src/main/java/net/aimeizi/spring/data/example/exception/EmpNotFound.java b/spring-data-example/src/main/java/net/aimeizi/spring/data/example/exception/EmpNotFound.java new file mode 100644 index 0000000..b98b4c5 --- /dev/null +++ b/spring-data-example/src/main/java/net/aimeizi/spring/data/example/exception/EmpNotFound.java @@ -0,0 +1,5 @@ +package net.aimeizi.spring.data.example.exception; + +public class EmpNotFound extends Exception{ + +} diff --git a/spring-data-example/src/main/java/net/aimeizi/spring/data/example/repositories/EmpRepository.java b/spring-data-example/src/main/java/net/aimeizi/spring/data/example/repositories/EmpRepository.java new file mode 100644 index 0000000..ca0d457 --- /dev/null +++ b/spring-data-example/src/main/java/net/aimeizi/spring/data/example/repositories/EmpRepository.java @@ -0,0 +1,9 @@ +package net.aimeizi.spring.data.example.repositories; + +import net.aimeizi.spring.data.example.entities.Emp; + +import org.springframework.data.jpa.repository.JpaRepository; + +public interface EmpRepository extends JpaRepository { + +} diff --git a/spring-data-example/src/main/java/net/aimeizi/spring/data/example/repositories/PostRepository.java b/spring-data-example/src/main/java/net/aimeizi/spring/data/example/repositories/PostRepository.java new file mode 100644 index 0000000..8a2f527 --- /dev/null +++ b/spring-data-example/src/main/java/net/aimeizi/spring/data/example/repositories/PostRepository.java @@ -0,0 +1,9 @@ +package net.aimeizi.spring.data.example.repositories; + +import org.springframework.data.jpa.repository.JpaRepository; + +import net.aimeizi.spring.data.example.entities.Post; + +public interface PostRepository extends JpaRepository { + +} diff --git a/spring-data-example/src/main/java/net/aimeizi/spring/data/example/service/EmpService.java b/spring-data-example/src/main/java/net/aimeizi/spring/data/example/service/EmpService.java new file mode 100644 index 0000000..2e0a0ba --- /dev/null +++ b/spring-data-example/src/main/java/net/aimeizi/spring/data/example/service/EmpService.java @@ -0,0 +1,19 @@ +package net.aimeizi.spring.data.example.service; + +import java.util.List; + +import net.aimeizi.spring.data.example.entities.Emp; + +public interface EmpService { + + List find(); + + Emp findOne(int id); + + Emp save(Emp emp); + + Emp update(Emp emp); + + Emp delete(Emp emp); + +} diff --git a/spring-data-example/src/main/java/net/aimeizi/spring/data/example/service/PostService.java b/spring-data-example/src/main/java/net/aimeizi/spring/data/example/service/PostService.java new file mode 100644 index 0000000..dc469db --- /dev/null +++ b/spring-data-example/src/main/java/net/aimeizi/spring/data/example/service/PostService.java @@ -0,0 +1,18 @@ +package net.aimeizi.spring.data.example.service; + +import java.util.List; + +import net.aimeizi.spring.data.example.entities.Post; + +public interface PostService { + + List find(); + + Post findOne(int id); + + Post save(Post post); + + Post update(Post post); + + Post delete(Post post); +} diff --git a/spring-data-example/src/main/java/net/aimeizi/spring/data/example/service/impl/EmpServiceImpl.java b/spring-data-example/src/main/java/net/aimeizi/spring/data/example/service/impl/EmpServiceImpl.java new file mode 100644 index 0000000..734f6fa --- /dev/null +++ b/spring-data-example/src/main/java/net/aimeizi/spring/data/example/service/impl/EmpServiceImpl.java @@ -0,0 +1,59 @@ +package net.aimeizi.spring.data.example.service.impl; + +import java.util.List; + +import net.aimeizi.spring.data.example.entities.Emp; +import net.aimeizi.spring.data.example.repositories.EmpRepository; +import net.aimeizi.spring.data.example.service.EmpService; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +@Transactional +public class EmpServiceImpl implements EmpService { + + @Autowired + private EmpRepository empRepository; + + @Override + public List find() { + return empRepository.findAll(); + } + + @Override + public Emp findOne(int id) { + return empRepository.findOne(id); + } + + @Override + public Emp save(Emp emp) { + return empRepository.save(emp); + } + + @Override + public Emp update(Emp emp) { + + Emp one = empRepository.findOne(emp.getEmpid()); + + one.setEmpname(emp.getEmpname()); + + one.setEmpaddress(emp.getEmpaddress()); + + one.setDept(emp.getDept()); + + return one; + } + + @Override + public Emp delete(Emp emp) { + + Emp one = empRepository.findOne(emp.getEmpid()); + + empRepository.delete(one); + + return one; + } + +} diff --git a/spring-data-example/src/main/java/net/aimeizi/spring/data/example/service/impl/PostServiceImpl.java b/spring-data-example/src/main/java/net/aimeizi/spring/data/example/service/impl/PostServiceImpl.java new file mode 100644 index 0000000..bcb5c8f --- /dev/null +++ b/spring-data-example/src/main/java/net/aimeizi/spring/data/example/service/impl/PostServiceImpl.java @@ -0,0 +1,57 @@ +package net.aimeizi.spring.data.example.service.impl; + +import java.util.List; + +import net.aimeizi.spring.data.example.entities.Post; +import net.aimeizi.spring.data.example.repositories.PostRepository; +import net.aimeizi.spring.data.example.service.PostService; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +@Transactional +public class PostServiceImpl implements PostService { + + @Autowired + PostRepository repository; + + @Override + public List find() { + return repository.findAll(); + } + + @Override + public Post save(Post post) { + return repository.save(post); + } + + @Override + public Post update(Post post) { + + Post one = repository.findOne(post.getPostId()); + + one.setTitle(post.getTitle()); + one.setPostDate(post.getPostDate()); + + return one; + + } + + @Override + public Post delete(Post post) { + + Post one = repository.findOne(post.getPostId()); + + repository.delete(one); + + return one; + } + + @Override + public Post findOne(int id) { + return repository.findOne(id); + } + +} diff --git a/spring-data-example/src/main/java/net/aimeizi/spring/data/example/validation/EmpValidator.java b/spring-data-example/src/main/java/net/aimeizi/spring/data/example/validation/EmpValidator.java new file mode 100644 index 0000000..1295d89 --- /dev/null +++ b/spring-data-example/src/main/java/net/aimeizi/spring/data/example/validation/EmpValidator.java @@ -0,0 +1,24 @@ +package net.aimeizi.spring.data.example.validation; + +import net.aimeizi.spring.data.example.entities.Emp; + +import org.springframework.stereotype.Component; +import org.springframework.validation.Errors; +import org.springframework.validation.ValidationUtils; +import org.springframework.validation.Validator; + +@Component +public class EmpValidator implements Validator { + + @Override + public boolean supports(Class clazz) { + return Emp.class.isAssignableFrom(clazz); + } + + @Override + public void validate(Object target, Errors errors) { + ValidationUtils.rejectIfEmptyOrWhitespace(errors, "empname", "emp.empname.empty"); + ValidationUtils.rejectIfEmptyOrWhitespace(errors, "empaddress", "emp.empaddress.empty"); + } + +} diff --git a/spring-data-example/src/main/resources/application.properties b/spring-data-example/src/main/resources/application.properties new file mode 100644 index 0000000..c351508 --- /dev/null +++ b/spring-data-example/src/main/resources/application.properties @@ -0,0 +1,13 @@ +message.source.basename=i18n/messages + +#jdbc properties: +jdbc.driver=com.mysql.jdbc.Driver +jdbc.url=jdbc:mysql://localhost:3306/to_thought_tutorial +jdbc.username=root +jdbc.password= + +#Hibernate Configuration: +hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect +hibernate.show_sql=true +hibernate.hbm2ddl.auto=update +entitymanager.packages.to.scan=net.aimeizi.spring.data.example.entities \ No newline at end of file diff --git a/spring-data-example/src/main/resources/i18n/messages.properties b/spring-data-example/src/main/resources/i18n/messages.properties new file mode 100644 index 0000000..326ce00 --- /dev/null +++ b/spring-data-example/src/main/resources/i18n/messages.properties @@ -0,0 +1,2 @@ +emp.empname.empty = The "emp empname" field can't be empty. +emp.empaddress.empty = The "emp empaddress" field can't be empty. \ No newline at end of file diff --git a/spring-data-example/src/main/resources/log4j.properties b/spring-data-example/src/main/resources/log4j.properties new file mode 100644 index 0000000..c84fe20 --- /dev/null +++ b/spring-data-example/src/main/resources/log4j.properties @@ -0,0 +1,6 @@ +log4j.appender.Stdout=org.apache.log4j.ConsoleAppender +log4j.appender.Stdout.layout=org.apache.log4j.PatternLayout +log4j.appender.Stdout.layout.conversionPattern=%-5p - %-26.26c{1} - %m\n + +log4j.rootLogger=INFO,Stdout +log4j.logger.org.springframework=INFO \ No newline at end of file diff --git a/spring-data-example/src/main/webapp/WEB-INF/pages/emp-edit.jsp b/spring-data-example/src/main/webapp/WEB-INF/pages/emp-edit.jsp new file mode 100644 index 0000000..2859e55 --- /dev/null +++ b/spring-data-example/src/main/webapp/WEB-INF/pages/emp-edit.jsp @@ -0,0 +1,34 @@ +<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> +<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%> + + + + +Edit Emp page + + +

Edit Emp page

+ + + + + + + + + + + + + + + + + + + +
Emp name:
Emp empaddress:
+
+Home page + + \ No newline at end of file diff --git a/spring-data-example/src/main/webapp/WEB-INF/pages/emp-list.jsp b/spring-data-example/src/main/webapp/WEB-INF/pages/emp-list.jsp new file mode 100644 index 0000000..10c8df0 --- /dev/null +++ b/spring-data-example/src/main/webapp/WEB-INF/pages/emp-list.jsp @@ -0,0 +1,33 @@ +<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> +<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> + + + + +Emp List page + + +

Emp List page

+ + + + + + + + + + + + + + + + +
idcompanyemployeesactions
${emp.empid}${emp.empname}${emp.empaddress} +Edit
+Delete
+
+Home page + + \ No newline at end of file diff --git a/spring-data-example/src/main/webapp/WEB-INF/pages/emp-new.jsp b/spring-data-example/src/main/webapp/WEB-INF/pages/emp-new.jsp new file mode 100644 index 0000000..8f3db1d --- /dev/null +++ b/spring-data-example/src/main/webapp/WEB-INF/pages/emp-new.jsp @@ -0,0 +1,34 @@ +<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> +<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%> + + + + +New Emp page + + +

New Emp page

+ + + + + + + + + + + + + + + + + + + +
Emp empname:
Emp empaddress:
+
+Home page + + \ No newline at end of file diff --git a/spring-data-example/src/main/webapp/WEB-INF/pages/index.jsp b/spring-data-example/src/main/webapp/WEB-INF/pages/index.jsp new file mode 100644 index 0000000..174ecfc --- /dev/null +++ b/spring-data-example/src/main/webapp/WEB-INF/pages/index.jsp @@ -0,0 +1,17 @@ +<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> + + + + +Home page + + +

Home page

+

+Welcome to "Emp application".
+${message}
+Create a new emp
+View all emp
+

+ + \ No newline at end of file diff --git a/spring-data-example/src/main/webapp/WEB-INF/web.xml b/spring-data-example/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000..192860e --- /dev/null +++ b/spring-data-example/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,9 @@ + + + + spring-data-example + + \ No newline at end of file diff --git a/spring-data-example/src/test/java/net/aimeizi/spring/data/example/EmpRepositoryTest.java b/spring-data-example/src/test/java/net/aimeizi/spring/data/example/EmpRepositoryTest.java new file mode 100644 index 0000000..2a143a3 --- /dev/null +++ b/spring-data-example/src/test/java/net/aimeizi/spring/data/example/EmpRepositoryTest.java @@ -0,0 +1,121 @@ +package net.aimeizi.spring.data.example; + +import java.awt.Color; +import java.awt.Font; +import java.awt.FontMetrics; +import java.awt.Graphics2D; +import java.awt.image.BufferedImage; +import java.awt.image.IndexColorModel; +import java.io.FileOutputStream; + +import javax.imageio.ImageIO; + +import net.aimeizi.spring.data.example.config.WebConfig; +import net.aimeizi.spring.data.example.entities.Dept; +import net.aimeizi.spring.data.example.entities.Emp; +import net.aimeizi.spring.data.example.service.EmpService; + +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=WebConfig.class) +public class EmpRepositoryTest { + + + @Autowired + EmpService empService; + + + private static IndexColorModel createIndexColorModel() { + + byte[] r = new byte[ 256 ]; + byte[] g = new byte[ 256 ]; + byte[] b = new byte[ 256 ]; + + // now fill in the r,g, and b arrays with a ramp or 0 + for ( int i = 0; i < 256 ; i++ ){ + r[i] = (byte) i; + g[i] = (byte) i; + b[i] = (byte) i; + } + return new IndexColorModel( 8, 256, r, g, b ); + + } + + + @Test + public void save(){ + + Emp emp = new Emp(); + emp.setEmpname("马云"); + emp.setEmpaddress("浙江杭州"); + + Dept dept = new Dept(); + + dept.setDeptname("研发部"); + + dept.setDeptphonenumber("110"); + + emp.setDept(dept); + + empService.save(emp ); + + } + + @Test + public void delete(){ + Emp emp = empService.findOne(2); + empService.delete(emp); + } + + @Test + public void update(){ + + Emp emp = empService.findOne(5); + + emp.setEmpname("马化腾"); + emp.setEmpaddress("广东深圳"); + + Dept dept = emp.getDept(); + dept.setDeptphonenumber("120"); + dept.setDeptname("大客户服务部"); + + emp.setDept(dept); + + empService.update(emp); + + } + + @Test + public void imageEmail() throws Exception{ + + String email = "sxyx2008@163.com"; + + int height = 22; + BufferedImage bi = new BufferedImage(255, height, + BufferedImage.TYPE_INT_RGB); + Graphics2D g = (Graphics2D) bi.getGraphics(); + Font mFont = new Font("Verdana", Font.PLAIN, 14); + g.setFont(mFont); + g.drawString(email, 2, 19); + FontMetrics fm = g.getFontMetrics(); + int new_width = fm.charsWidth(email.toCharArray(), 0, email.length()) + 4; + int new_height = fm.getHeight(); + BufferedImage nbi = new BufferedImage(new_width, new_height, + BufferedImage.TYPE_BYTE_INDEXED, createIndexColorModel()); + Graphics2D g2 = (Graphics2D) nbi.getGraphics(); + g2.setColor(new Color(0, 0, 0, 0));// 透明 + g2.fillRect(0, 0, new_width, new_height); + g2.setFont(mFont); + g2.setColor(new Color(200, 0, 0)); + g2.drawString(email, 2, new_height - 4); + + ImageIO.write(nbi, "gif", new FileOutputStream( + "target/sxyx2008@163.com.gif")); + } + +} diff --git a/spring-data-example/src/test/java/net/aimeizi/spring/data/example/PostRepositoryTest.java b/spring-data-example/src/test/java/net/aimeizi/spring/data/example/PostRepositoryTest.java new file mode 100644 index 0000000..b687ebe --- /dev/null +++ b/spring-data-example/src/test/java/net/aimeizi/spring/data/example/PostRepositoryTest.java @@ -0,0 +1,81 @@ +package net.aimeizi.spring.data.example; + +import static org.junit.Assert.assertNotNull; + +import java.util.Calendar; +import java.util.Date; +import java.util.List; + +import net.aimeizi.spring.data.example.config.WebConfig; +import net.aimeizi.spring.data.example.entities.Post; +import net.aimeizi.spring.data.example.service.PostService; + +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; +import org.springframework.test.context.support.AnnotationConfigContextLoader; +import org.springframework.test.context.web.WebAppConfiguration; + +@WebAppConfiguration +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(classes=WebConfig.class,loader=AnnotationConfigContextLoader.class) +public class PostRepositoryTest { + + @Autowired + PostService postService; + + @Test + public void save() { + Post post = new Post(); + post.setPostDate(new Date()); + post.setTitle("Second Post"); + + postService.save(post); + + Post dbpost = postService.findOne(post.getPostId()); + assertNotNull(dbpost); + System.out.println(dbpost.getTitle()); + } + + @Test + public void find() { + + List list = postService.find(); + + for (Post p : list) { + System.out.println(p); + } + + } + + @Test + public void findOne() { + + System.out.println(postService.findOne(1)); + + } + + @Test + public void update(){ + + Post post = new Post(); + post.setPostId(1); + post.setPostDate(Calendar.getInstance().getTime()); + post.setTitle("update title"); + + postService.update(post); + } + + @Test + public void delete(){ + + Post post = postService.findOne(2); + + postService.delete(post); + + find(); + } + +}