Qing vor 1 Jahr
Ursprung
Commit
c4010753a1
25 geänderte Dateien mit 608 neuen und 33 gelöschten Zeilen
  1. 68 24
      springmvc-demo/.idea/workspace.xml
  2. 100 4
      springmvc-demo/pom.xml
  3. 1 1
      springmvc-demo/src/main/java/com/sf/anno/MyServletContainerInitializer.java
  4. 1 1
      springmvc-demo/src/main/java/com/sf/anno/MyWebAppInitializer.java
  5. 1 1
      springmvc-demo/src/main/java/com/sf/anno/SpringMvcConfig.java
  6. 12 2
      springmvc-demo/src/main/java/com/sf/controller/AuthorController.java
  7. 7 0
      springmvc-demo/src/main/java/com/sf/controller/BookController.java
  8. 16 0
      springmvc-demo/src/main/java/com/sf/controller/HelloController.java
  9. 16 0
      springmvc-demo/src/main/java/com/sf/dao/AuthorDao.java
  10. 19 0
      springmvc-demo/src/main/java/com/sf/dao/BookDao.java
  11. 10 0
      springmvc-demo/src/main/java/com/sf/dao/TypeDao.java
  12. 27 0
      springmvc-demo/src/main/java/com/sf/entity/Author.java
  13. 37 0
      springmvc-demo/src/main/java/com/sf/entity/Book.java
  14. 18 0
      springmvc-demo/src/main/java/com/sf/entity/Type.java
  15. 10 0
      springmvc-demo/src/main/java/com/sf/service/AuthorService.java
  16. 18 0
      springmvc-demo/src/main/java/com/sf/service/BookService.java
  17. 21 0
      springmvc-demo/src/main/java/com/sf/service/impl/AuthorServiceImpl.java
  18. 70 0
      springmvc-demo/src/main/java/com/sf/service/impl/BookServiceImpl.java
  19. 4 0
      springmvc-demo/src/main/resources/db.properties
  20. 11 0
      springmvc-demo/src/main/resources/mapper/authorMapper.xml
  21. 10 0
      springmvc-demo/src/main/resources/mapper/bookMapper.xml
  22. 9 0
      springmvc-demo/src/main/resources/mapper/typeMapper.xml
  23. 17 0
      springmvc-demo/src/main/resources/mybatis-config.xml
  24. 68 0
      springmvc-demo/src/main/resources/spring.xml
  25. 37 0
      springmvc-demo/src/main/webapp/WEB-INF/web.xml

+ 68 - 24
springmvc-demo/.idea/workspace.xml

@@ -10,50 +10,68 @@
     <option name="autoReloadType" value="SELECTIVE" />
   </component>
   <component name="ChangeListManager">
-    <list default="true" id="d55c211f-cca4-4230-b149-ae8c1dab3c43" name="Changes" comment="">
+    <list default="true" id="d55c211f-cca4-4230-b149-ae8c1dab3c43" name="Changes" comment="0117 springmvc">
       <change afterPath="$PROJECT_DIR$/../.idea/VIPJAVA.iml" afterDir="false" />
       <change afterPath="$PROJECT_DIR$/../gn_oa_vip27/.idea/google-java-format.xml" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/.gitignore" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/.idea/inspectionProfiles/Project_Default.xml" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/pom.xml" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/src/main/java/com/sf/MyServletContainerInitializer.java" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/src/main/java/com/sf/MyWebAppInitializer.java" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/src/main/java/com/sf/SpringMvcConfig.java" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/src/main/java/com/sf/controller/AuthorController.java" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/src/main/java/com/sf/controller/BookController.java" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/src/main/java/com/sf/servlet/UserServlet.java" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/src/main/resources/spring-mvc.xml" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/src/main/webapp/WEB-INF/web.xml" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/src/main/webapp/hello.jsp" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/src/main/webapp/index.jsp" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/sf/controller/HelloController.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/sf/dao/AuthorDao.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/sf/dao/BookDao.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/sf/dao/TypeDao.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/sf/entity/Author.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/sf/entity/Book.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/sf/entity/Type.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/sf/service/AuthorService.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/sf/service/BookService.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/sf/service/impl/AuthorServiceImpl.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/java/com/sf/service/impl/BookServiceImpl.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/resources/db.properties" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/resources/mapper/authorMapper.xml" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/resources/mapper/bookMapper.xml" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/resources/mapper/typeMapper.xml" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/resources/mybatis-config.xml" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/main/resources/spring.xml" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/../02_JavaWeb/day06_mybatis/src/main/java/com/lc/mapper/UserMapper.java" beforeDir="false" afterPath="$PROJECT_DIR$/../02_JavaWeb/day06_mybatis/src/main/java/com/lc/mapper/UserMapper.java" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/../02_JavaWeb/day06_mybatis/src/main/resources/com/lc/mapper/UserMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/../02_JavaWeb/day06_mybatis/src/main/resources/com/lc/mapper/UserMapper.xml" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/../gn_oa_vip27/.idea/jarRepositories.xml" beforeDir="false" afterPath="$PROJECT_DIR$/../gn_oa_vip27/.idea/jarRepositories.xml" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/../gn_oa_vip27/.idea/misc.xml" beforeDir="false" afterPath="$PROJECT_DIR$/../gn_oa_vip27/.idea/misc.xml" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/../gn_oa_vip27/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/../gn_oa_vip27/.idea/workspace.xml" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/../gn_oa_vip27/src/main/java/com/sf/utils/JdbcUtil.java" beforeDir="false" afterPath="$PROJECT_DIR$/../gn_oa_vip27/src/main/java/com/sf/utils/JdbcUtil.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/pom.xml" beforeDir="false" afterPath="$PROJECT_DIR$/pom.xml" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/sf/MyServletContainerInitializer.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/sf/anno/MyServletContainerInitializer.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/sf/MyWebAppInitializer.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/sf/anno/MyWebAppInitializer.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/sf/SpringMvcConfig.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/sf/anno/SpringMvcConfig.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/sf/controller/AuthorController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/sf/controller/AuthorController.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/java/com/sf/controller/BookController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/com/sf/controller/BookController.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/webapp/WEB-INF/web.xml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/webapp/WEB-INF/web.xml" afterDir="false" />
     </list>
     <option name="SHOW_DIALOG" value="false" />
     <option name="HIGHLIGHT_CONFLICTS" value="true" />
     <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
     <option name="LAST_RESOLUTION" value="IGNORE" />
   </component>
+  <component name="ChangesViewManager">
+    <option name="groupingKeys">
+      <option value="directory" />
+    </option>
+  </component>
   <component name="FileTemplateManagerImpl">
     <option name="RECENT_TEMPLATES">
       <list>
         <option value="Jsp File" />
         <option value="Spring Xml File" />
+        <option value="Interface" />
         <option value="Class" />
+        <option value="Mybatis Mapper Xml File" />
       </list>
     </option>
   </component>
   <component name="Git.Settings">
     <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$/.." />
   </component>
-  <component name="KubernetesApiProvider"><![CDATA[{
-  "isMigrated": true
-}]]></component>
+  <component name="KubernetesApiProvider">{
+  &quot;isMigrated&quot;: true
+}</component>
   <component name="LogFilters">
     <option name="FILTER_ERRORS" value="false" />
     <option name="FILTER_WARNINGS" value="false" />
@@ -61,9 +79,9 @@
     <option name="FILTER_DEBUG" value="true" />
     <option name="CUSTOM_FILTER" />
   </component>
-  <component name="ProjectColorInfo"><![CDATA[{
-  "associatedIndex": 4
-}]]></component>
+  <component name="ProjectColorInfo">{
+  &quot;associatedIndex&quot;: 4
+}</component>
   <component name="ProjectId" id="2b4QX4DZlPMWbRpeUw2AqyNi4lV" />
   <component name="ProjectLevelVcsManager">
     <ConfirmationsSetting value="2" id="Add" />
@@ -80,20 +98,28 @@
     "Tomcat Server.Tomcat 8.5.93.executor": "Run",
     "git-widget-placeholder": "master",
     "kotlin-language-version-configured": "true",
-    "last_opened_file_path": "/Users/Qing/IdeaProjects/SiFu/VIPJAVA/springmvc-demo/src/main/webapp/WEB-INF",
+    "last_opened_file_path": "/Users/Qing/IdeaProjects/SiFu/VIPJAVA/springmvc-demo/src/main/java/com/sf",
     "node.js.detected.package.eslint": "true",
     "node.js.detected.package.tslint": "true",
     "node.js.selected.package.eslint": "(autodetect)",
     "node.js.selected.package.tslint": "(autodetect)",
     "nodejs_package_manager_path": "npm",
-    "settings.editor.selected.configurable": "MavenSettings",
+    "project.structure.last.edited": "Project",
+    "project.structure.proportion": "0.17833698",
+    "project.structure.side.proportion": "0.0",
+    "settings.editor.selected.configurable": "preferences.externalResources",
     "vue.rearranger.settings.migration": "true"
   }
 }]]></component>
   <component name="RecentsManager">
     <key name="CopyFile.RECENT_KEYS">
+      <recent name="$PROJECT_DIR$/src/main/java/com/sf" />
+      <recent name="$PROJECT_DIR$/src/main/resources" />
       <recent name="$PROJECT_DIR$/src/main/webapp/WEB-INF" />
     </key>
+    <key name="MoveFile.RECENT_KEYS">
+      <recent name="$PROJECT_DIR$/src/main/java/com/sf/anno" />
+    </key>
   </component>
   <component name="RunManager">
     <configuration name="Tomcat 10.0.21" type="#com.intellij.j2ee.web.tomcat.TomcatRunConfigurationFactory" factoryName="Local" APPLICATION_SERVER_NAME="Tomcat 10.0.21" ALTERNATIVE_JRE_ENABLED="false" nameIsGenerated="true">
@@ -199,11 +225,29 @@
       <option name="number" value="Default" />
       <option name="presentableId" value="Default" />
       <updated>1705471907664</updated>
-      <workItem from="1705471908780" duration="9815000" />
+      <workItem from="1705471908780" duration="12452000" />
+      <workItem from="1705492873471" duration="6116000" />
+    </task>
+    <task id="LOCAL-00001" summary="0117 springmvc">
+      <option name="closed" value="true" />
+      <created>1705481868228</created>
+      <option name="number" value="00001" />
+      <option name="presentableId" value="LOCAL-00001" />
+      <option name="project" value="LOCAL" />
+      <updated>1705481868228</updated>
     </task>
+    <option name="localTasksCounter" value="2" />
     <servers />
   </component>
   <component name="TypeScriptGeneratedFilesManager">
     <option name="version" value="3" />
   </component>
+  <component name="VcsManagerConfiguration">
+    <MESSAGE value="0117 springmvc" />
+    <option name="LAST_COMMIT_MESSAGE" value="0117 springmvc" />
+  </component>
+  <component name="XSLT-Support.FileAssociations.UIState">
+    <expand />
+    <select />
+  </component>
 </project>

+ 100 - 4
springmvc-demo/pom.xml

@@ -7,22 +7,118 @@
     <version>1.0-SNAPSHOT</version>
     <name>springmvc-demo Maven Webapp</name>
     <url>http://maven.apache.org</url>
+
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <spring.version>6.1.2</spring.version>
+    </properties>
+
     <dependencies>
         <dependency>
             <groupId>org.junit.jupiter</groupId>
             <artifactId>junit-jupiter</artifactId>
             <version>5.10.1</version>
         </dependency>
+        <dependency>
+            <groupId>jakarta.servlet</groupId>
+            <artifactId>jakarta.servlet-api</artifactId>
+            <version>6.1.0-M1</version>
+        </dependency>
+
         <dependency>
             <groupId>org.springframework</groupId>
             <artifactId>spring-webmvc</artifactId>
-            <version>6.1.2</version>
+            <version>${spring.version}</version>
         </dependency>
+
         <dependency>
-            <groupId>jakarta.servlet</groupId>
-            <artifactId>jakarta.servlet-api</artifactId>
-            <version>6.1.0-M1</version>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-test</artifactId>
+            <version>${spring.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>jakarta.annotation</groupId>
+            <artifactId>jakarta.annotation-api</artifactId>
+            <version>3.0.0-M1</version>
+        </dependency>
+
+        <dependency>
+            <groupId>cglib</groupId>
+            <artifactId>cglib</artifactId>
+            <version>3.3.0</version>
+        </dependency>
+
+        <!-- maven search -->
+        <!--    <dependency>-->
+        <!--      <groupId>org.springframework</groupId>-->
+        <!--      <artifactId>spring-context</artifactId>-->
+        <!--      <version>6.1.1</version>-->
+        <!--    </dependency>-->
+
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-aspects</artifactId>
+            <version>${spring.version}</version>
+        </dependency>
+        <!--aspectj支持-->
+        <dependency>
+            <groupId>org.aspectj</groupId>
+            <artifactId>aspectjrt</artifactId>
+            <version>1.9.21.M1</version>
+        </dependency>
+        <dependency>
+            <groupId>org.aspectj</groupId>
+            <artifactId>aspectjweaver</artifactId>
+            <version>1.9.21.M1</version>
+        </dependency>
+
+        <dependency>
+            <groupId>mysql</groupId>
+            <artifactId>mysql-connector-java</artifactId>
+            <version>8.0.33</version>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>druid</artifactId>
+            <version>1.2.20</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-jdbc</artifactId>
+            <version>${spring.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <version>1.18.30</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-tx</artifactId>
+            <version>${spring.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-orm</artifactId>
+            <version>${spring.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.mybatis</groupId>
+            <artifactId>mybatis</artifactId>
+            <version>3.5.14</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.mybatis</groupId>
+            <artifactId>mybatis-spring</artifactId>
+            <version>3.0.3</version>
         </dependency>
+
     </dependencies>
     <build>
         <finalName>springmvc-demo</finalName>

+ 1 - 1
springmvc-demo/src/main/java/com/sf/MyServletContainerInitializer.java → springmvc-demo/src/main/java/com/sf/anno/MyServletContainerInitializer.java

@@ -1,4 +1,4 @@
-package com.sf;
+package com.sf.anno;
 
 import org.springframework.web.context.WebApplicationContext;
 import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;

+ 1 - 1
springmvc-demo/src/main/java/com/sf/MyWebAppInitializer.java → springmvc-demo/src/main/java/com/sf/anno/MyWebAppInitializer.java

@@ -1,4 +1,4 @@
-package com.sf;
+package com.sf.anno;
 
 import jakarta.servlet.ServletContext;
 import jakarta.servlet.ServletException;

+ 1 - 1
springmvc-demo/src/main/java/com/sf/SpringMvcConfig.java → springmvc-demo/src/main/java/com/sf/anno/SpringMvcConfig.java

@@ -1,4 +1,4 @@
-package com.sf;
+package com.sf.anno;
 
 import org.springframework.context.annotation.ComponentScan;
 import org.springframework.context.annotation.Configuration;

+ 12 - 2
springmvc-demo/src/main/java/com/sf/controller/AuthorController.java

@@ -1,6 +1,10 @@
 package com.sf.controller;
 
+import com.sf.service.AuthorService;
+import com.sf.service.BookService;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 /**
@@ -8,11 +12,17 @@ import org.springframework.web.bind.annotation.RestController;
  * 在不需要返回页面 只需要返回数据的时候  可以被使用
  */
 @RestController
+@RequestMapping(produces = "application/json; charset=utf-8")
 public class AuthorController {
 
+    @Autowired
+    private AuthorService authorService;
+
+
     @GetMapping("/author")
-    public String getAll(){
-        return "liucixin ligang luyao";
+    public String getAll() {
+//        return "liucixin ligang luyao";
 //        return "刘慈欣 李刚 路遥";
+        return authorService.queryAuthors().toString();
     }
 }

+ 7 - 0
springmvc-demo/src/main/java/com/sf/controller/BookController.java

@@ -21,8 +21,13 @@ import org.springframework.web.servlet.ModelAndView;
  *   Controller -> Service -> Dao/Mapper
  */
 @Controller
+@RequestMapping("/book")
 public class BookController {
 
+    // localhost:8080/springmvc_demo/book/hello
+    // localhost:8080/springmvc_demo/book/list
+    // localhost:8080/springmvc_demo/book/id
+
     // HttpServletRequest request, HttpServletResponse response
 //    @RequestMapping("/hello")
     @GetMapping("/hello")
@@ -33,4 +38,6 @@ public class BookController {
         mv.setViewName("/hello.jsp");
         return mv;
     }
+
+
 }

+ 16 - 0
springmvc-demo/src/main/java/com/sf/controller/HelloController.java

@@ -0,0 +1,16 @@
+package com.sf.controller;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.servlet.ModelAndView;
+
+@Controller
+public class HelloController {
+
+    @RequestMapping("/hello")
+    public ModelAndView hello(){
+        ModelAndView modelAndView = new ModelAndView();
+        modelAndView.setViewName("/index.jsp");
+        return modelAndView;
+    }
+}

+ 16 - 0
springmvc-demo/src/main/java/com/sf/dao/AuthorDao.java

@@ -0,0 +1,16 @@
+package com.sf.dao;
+
+import com.sf.entity.Author;
+
+import java.util.List;
+
+public interface AuthorDao {
+
+    List<Author> findAll();
+//
+//    int insert(Author author);
+//
+//    int delete(Author author);
+//
+//    int deleteById(String authorId);
+}

+ 19 - 0
springmvc-demo/src/main/java/com/sf/dao/BookDao.java

@@ -0,0 +1,19 @@
+package com.sf.dao;
+
+import com.sf.entity.Book;
+
+import java.util.List;
+
+public interface BookDao {
+    List<Book> findAll();
+
+//    int insert(Book book);
+//
+//    Book findOne(String bookId);
+//
+//    int delete(Book book);
+//
+//    int deleteById(String bookId);
+//
+//    String findAuthorIdById(String bookId);
+}

+ 10 - 0
springmvc-demo/src/main/java/com/sf/dao/TypeDao.java

@@ -0,0 +1,10 @@
+package com.sf.dao;
+
+import com.sf.entity.Type;
+
+import java.util.List;
+
+public interface TypeDao {
+
+    List<Type> findAll();
+}

+ 27 - 0
springmvc-demo/src/main/java/com/sf/entity/Author.java

@@ -0,0 +1,27 @@
+package com.sf.entity;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class Author implements Serializable {
+
+//    private static final long serialVersionUID = 1L;
+    private static final long serialVersionUID = 1501323542349052088L;
+
+    private Long id;
+
+    private String authorId;
+
+    private String authorName;
+
+    private String authorDesc;
+
+}

+ 37 - 0
springmvc-demo/src/main/java/com/sf/entity/Book.java

@@ -0,0 +1,37 @@
+package com.sf.entity;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+// 通过两个插件  组成一个简单的 javabean entity
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class Book implements Serializable {
+
+    private static final long serialVersionUID = -8962182349002967026L;
+//    private static final long serialVersionUID = -544141905782858543L;
+
+    private Long id;
+
+    private String bookId;
+
+    private String bookName;
+
+    private String typeId;
+
+    private String authorId;
+
+    private String authorName;
+
+    private String bookImg;
+
+    private String bookDesc;
+
+
+}

+ 18 - 0
springmvc-demo/src/main/java/com/sf/entity/Type.java

@@ -0,0 +1,18 @@
+package com.sf.entity;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class Type implements Serializable {
+    private Long id;
+    private String typeId;
+    private String typeName;
+}

+ 10 - 0
springmvc-demo/src/main/java/com/sf/service/AuthorService.java

@@ -0,0 +1,10 @@
+package com.sf.service;
+
+import com.sf.entity.Author;
+
+import java.util.List;
+
+public interface AuthorService {
+
+    List<Author> queryAuthors();
+}

+ 18 - 0
springmvc-demo/src/main/java/com/sf/service/BookService.java

@@ -0,0 +1,18 @@
+package com.sf.service;
+
+import com.sf.entity.Book;
+
+import java.util.List;
+
+public interface BookService {
+    // 通过ctrl + alt可以进入实现逻辑
+//    void insert(Author author, Book book);
+//
+//    void delete(Author author, Book book);
+//
+//    void deleteById(String authorId, String bookId);
+//
+//    void deleteByBookId(String bookId);
+
+    List<Book> queryBooks();
+}

+ 21 - 0
springmvc-demo/src/main/java/com/sf/service/impl/AuthorServiceImpl.java

@@ -0,0 +1,21 @@
+package com.sf.service.impl;
+
+import com.sf.dao.AuthorDao;
+import com.sf.entity.Author;
+import com.sf.service.AuthorService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public class AuthorServiceImpl implements AuthorService {
+
+    @Autowired
+    private AuthorDao authorDao;
+
+    @Override
+    public List<Author> queryAuthors() {
+        return authorDao.findAll();
+    }
+}

+ 70 - 0
springmvc-demo/src/main/java/com/sf/service/impl/BookServiceImpl.java

@@ -0,0 +1,70 @@
+package com.sf.service.impl;
+
+import com.sf.dao.AuthorDao;
+import com.sf.dao.BookDao;
+import com.sf.entity.Book;
+import com.sf.service.BookService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public class BookServiceImpl implements BookService {
+
+    // 功能 - 对表的处理 - 数据库本身处理
+    // service - dao - mysql
+
+    @Autowired
+    private BookDao bookDao;
+
+    @Autowired
+    private AuthorDao authorDao;
+
+    /**
+     * @Transactional
+     * 注解的含义  是在这个方法中 增加事务处理
+     * 事务处理的本质是 切面 是高级通知(顾问)
+     */
+//    @Override
+//    @Transactional
+//    public void insert(Author author, Book book) {
+//
+//        int result1 = authorDao.insert(author);
+//        System.out.println("添加作者的结果: " + result1);
+////        System.out.println(1 / 0);
+//        int result = bookDao.insert(book);
+//        System.out.println("添加书籍的结果: " + result);
+//
+//    }
+//
+//    @Override
+//    @Transactional
+//    public void delete(Author author, Book book) {
+//        bookDao.delete(book);
+//        authorDao.delete(author);
+//    }
+//
+//    @Override
+//    public void deleteById(String authorId, String bookId) {
+//        bookDao.deleteById(bookId);
+//        authorDao.deleteById(authorId);
+//    }
+//
+//    @Override
+//    public void deleteByBookId(String bookId) {
+//        // 只有bookId 怎么获取authorId
+//        //  可以通过bookId  找到对应的author_id  然后去author表删除数据
+//        //   bookDao.findAuthorIdById(bookId);
+//        //   authorDao.deleteById(authorId);
+//        //   bookDao.deleteById(bookId);
+//        String authorId = bookDao.findAuthorIdById(bookId);
+//        authorDao.deleteById(authorId);
+//        bookDao.deleteById(bookId);
+//    }
+
+    @Override
+    public List<Book> queryBooks() {
+        return bookDao.findAll();
+    }
+}

+ 4 - 0
springmvc-demo/src/main/resources/db.properties

@@ -0,0 +1,4 @@
+jdbc.url=jdbc:mysql://localhost:3306/novels?useUnicode=true&characterEncoding=utf-8&allowPublicKeyRetrieval=true&useSSL=false&serverTimezone=Asia/Shanghai
+jdbc.driver=com.mysql.cj.jdbc.Driver
+jdbc.username=root
+jdbc.password=root123456

+ 11 - 0
springmvc-demo/src/main/resources/mapper/authorMapper.xml

@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="com.sf.dao.AuthorDao">
+    <!-- 查询 -->
+    <select id="findAll" resultType="com.sf.entity.Author">
+        select * from author
+    </select>
+
+</mapper>

+ 10 - 0
springmvc-demo/src/main/resources/mapper/bookMapper.xml

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="com.sf.dao.BookDao">
+    <!-- 查询 -->
+    <select id="findAll" resultType="com.sf.entity.Book">
+        select * from book
+    </select>
+</mapper>

+ 9 - 0
springmvc-demo/src/main/resources/mapper/typeMapper.xml

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="com.sf.dao.TypeDao">
+    <select id="findAll" resultType="com.sf.entity.Type">
+        select * from type
+    </select>
+</mapper>

+ 17 - 0
springmvc-demo/src/main/resources/mybatis-config.xml

@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-config.dtd">
+
+<configuration>
+    <!-- 开启延迟加载 该项默认为false,即所有关联属性都会在初始化时加载
+        true表示延迟按需加载 -->
+    <settings>
+        <setting name="lazyLoadingEnabled" value="true"/>
+        <!-- 开启二级缓存 -->
+        <setting name="cacheEnabled" value="true"/>
+        <!-- 配置mybatis自动转换为驼峰式命名 -->
+        <setting name="mapUnderscoreToCamelCase" value="true"/>
+    </settings>
+
+</configuration>

+ 68 - 0
springmvc-demo/src/main/resources/spring.xml

@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xmlns:context="http://www.springframework.org/schema/context"
+       xmlns:tx="http://www.springframework.org/schema/tx"
+       xsi:schemaLocation="http://www.springframework.org/schema/beans
+  https://www.springframework.org/schema/beans/spring-beans.xsd
+  http://www.springframework.org/schema/context
+  https://www.springframework.org/schema/context/spring-context.xsd
+  http://www.springframework.org/schema/tx
+  http://www.springframework.org/schema/tx/spring-tx.xsd">
+
+    <!-- 读取java配置文件,替换占位符数据 -->
+    <context:property-placeholder location="classpath:db.properties"/>
+    <!-- 从底层往上层配置 -->
+    <!-- 管理第三方的DataSource -->
+    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
+        <property name="url" value="${jdbc.url}"/>
+        <property name="username" value="${jdbc.username}"/>
+        <property name="password" value="${jdbc.password}"/>
+        <property name="driverClassName" value="${jdbc.driver}"/>
+    </bean>
+
+    <!--
+        配置SqlSessionFactory, 是使用sql的会话工厂
+        SqlSession  指的是在和mysql连接时的一次会话
+        配置数据源、通用配置文件(mybatis-config.xml)、具体的配置文件,也就是所有mapper.xml
+        因为具体的配置文件是多个  所有使用扫描的方式  会把所有在mapper中的 .xml后缀的文件都扫描到
+    -->
+    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
+        <!-- 注入dataSource -->
+        <property name="dataSource" ref="dataSource"/>
+        <property name="configLocation" value="classpath:mybatis-config.xml"/>
+        <property name="mapperLocations" value="classpath*:mapper/**/*.xml"/>
+    </bean>
+
+    <!-- 配置Mapper代理对象方式一:MapperFactoryBean(了解) -->
+    <!-- 通过MapperFactoryBean生成的代理对象,一次只能针对一个接口进行生成 -->
+    <!--<bean id="accountMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
+    <property name="sqlSessionFactory" ref="sqlSessionFactory"></property>
+    <property name="mapperInterface" value="top.alanshelby.mapper.AccountMapper"></property>
+  </bean>-->
+    <!-- 配置Mapper代理对象方式二:MapperScannerConfigurer -->
+    <!-- 批量代理对象的生成 -->
+    <!-- 注意事项:mapper接口类和mapper映射文件同包同名 -->
+    <!--
+      在配置了mybatis的sqlSessionFactory后  确定了mybatis的基本配置文件
+      接下来需要将mybatis的文件和 接口相关联 因为要关联的接口有多个  所以使用扫描的方式
+      使用配置sqlSessionFactoryBeanName,也就是上面那个bean的名字,用value赋值进去,来关联
+    -->
+    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
+        <!-- 指定需要生成代理的接口所在的包名 -->
+        <property name="basePackage" value="com.sf.dao"/>
+        <!-- 注意事项:千万不要配置SqlSessionFactory,要配置sqlSessionFactoryBeanName -->
+        <!-- <property name="sqlSessionFactory" ref="sqlSessionFactory"></property> -->
+        <!-- 指定MyBatis配置文件的位置 -->
+        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
+    </bean>
+
+    <context:component-scan base-package="com.sf.service"></context:component-scan>
+    <!-- 配置平台事务管理器 -->
+    <bean id="transactionManager"
+          class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
+        <property name="dataSource" ref="dataSource"></property>
+    </bean>
+    <!-- 开启事务注解配置 -->
+    <tx:annotation-driven transaction-manager="transactionManager" mode="proxy"/>
+</beans>

+ 37 - 0
springmvc-demo/src/main/webapp/WEB-INF/web.xml

@@ -12,6 +12,14 @@
 <!--                      http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"-->
 <!--         version="3.1">-->
 
+    <context-param>
+        <param-name>contextConfigLocation</param-name>
+        <param-value>classpath:spring.xml</param-value>
+    </context-param>
+    <listener>
+        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
+    </listener>
+
     <servlet>
         <servlet-name>dispatcherServlet</servlet-name>
         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
@@ -34,4 +42,33 @@
         <servlet-name>dispatcherServlet</servlet-name>
         <url-pattern>/</url-pattern>
     </servlet-mapping>
+
+
+<!--    <filter>-->
+<!--        <filter-name>CharacterEncoding</filter-name>-->
+<!--        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>-->
+<!--        <init-param>-->
+<!--            <param-name>encoding</param-name>-->
+<!--            <param-value>utf-8</param-value>-->
+<!--        </init-param>-->
+<!--    </filter>-->
+<!--    <filter-mapping>-->
+<!--        <filter-name>CharacterEncoding</filter-name>-->
+<!--        <url-pattern>/*</url-pattern>-->
+<!--    </filter-mapping>-->
+
+    <!--    解决中文乱码的过滤器-->
+    <filter>
+        <filter-name>characterEncodingFilter</filter-name>
+        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
+        <init-param>
+            <param-name>encoding</param-name>
+            <param-value>UTF-8</param-value>
+        </init-param>
+    </filter>
+    <filter-mapping>
+        <filter-name>characterEncodingFilter</filter-name>
+        <url-pattern>/*</url-pattern>
+    </filter-mapping>
+
 </web-app>