1. 程式人生 > >4.6 基於Spring-Boot的Mysql+jpa的增刪改查學習記錄 > 我的程式猿之路:第三十六章

4.6 基於Spring-Boot的Mysql+jpa的增刪改查學習記錄 > 我的程式猿之路:第三十六章

 

 

1.專案結構

      -JDK  1.8

      -SpringBoot  2.0.6

      -Thymeleaf

      -Hot Start

    

   1.1 後臺(5個)

      java\com\example\demo\beans\user.java                               (建立實體)

      java\com\example\demo\repository\userRepository.java        (資料持久)

      java\com\example\demo\userService\userService.java          (業務介面)

      java\com\example\demo\userService\userServiceImpl.java    (介面實現)

      java\com\example\demo\web\HeController.java                      (表現)

  1.2  web(4個)

     resources\templates\add.html                                                  (增加頁面)

    
     以及   配置檔案  目錄(程式碼在最後面)

     resources\templates\edit.html                                                  (修改頁面)

 

     resources\templates\index.html                                               (首頁頁面)

 

 

     resources\templates\login.html                                                (列表頁面)

       資料庫

 

    2  .程式碼

   1.user.java

 1 package com.example.demo.beans;
 2 
 3 import org.apache.catalina.User;
 4 
 5 import javax.persistence.Entity;
 6 import javax.persistence.GeneratedValue;
 7 import javax.persistence.GenerationType;
 8 import javax.persistence.Id;
 9 import java.io.Serializable;
10 
11 @Entity
12 public class user implements Serializable {
13 
14     @Id
15     @GeneratedValue
16     private int id;
17    private String name;
18    private String falg;
19 
20     public int getId() {
21         return id;
22     }
23 
24     public void setId(int id) {
25         this.id = id;
26     }
27 
28     public String getName() {
29         return name;
30     }
31 
32     public void setName(String name) {
33         this.name = name;
34     }
35 
36     public String getFalg() {
37         return falg;
38     }
39 
40     public void setFalg(String falg) {
41         this.falg = falg;
42     }
43     public user(){
44 
45     }
46     public user(String name,String falg){
47         super();
48         this.name=name;
49         this.falg=falg;
50     }
51 }

 

2.userRepository.java

 1 package com.example.demo.repository;
 2 import com.example.demo.beans.user;
 3 import org.springframework.data.jpa.repository.JpaRepository;
 4 import org.springframework.data.jpa.repository.Modifying;
 5 import org.springframework.data.jpa.repository.Query;
 6 import org.springframework.transaction.annotation.Transactional;
 7 
 8 import java.util.List;
 9 
10 public interface userRepository extends JpaRepository<user, Long> {
11 
12       public user findAllBy();
13       public List<user> findAllById(Integer id);
14        @Transactional
15        @Modifying
16        @Query("delete from user where id = ?1")
17        public void deleteByCustomerId(Integer id);
18 
19 }

3.userService.java

 1 package com.example.demo.userService;
 2 
 3 import org.springframework.beans.factory.annotation.Autowired;
 4 import com.example.demo.beans.user;
 5 import java.util.List;
 6 
 7 public interface userService {
 8 
 9     public List<user> getUserList();
10     public List<user> findUserById(Integer id);
11     public void edit(user user);
12     public void del(Integer id);
13     public void saveUser(user user);
14 
15 
16 }

 

4.userServiceImpl.java

 1 package com.example.demo.userService;
 2 
 3 import com.example.demo.repository.userRepository;
 4 import com.example.demo.beans.user;
 5 import org.springframework.beans.factory.annotation.Autowired;
 6 import org.springframework.stereotype.Service;
 7 import com.example.demo.userService.userService;
 8 import java.util.List;
 9 @Service
10 public class userServiceImpl implements userService {
11     @Autowired
12     private userRepository ur;
13     @Override
14     public List<user> getUserList() {
15         return ur.findAll();
16     }
17     public List<user> findUserById(Integer id){
18      //   long iss= (int)id;
19         return ur.findAllById(id);
20     }
21     public void edit(user user){
22         ur.save(user);
23     }
24     public void del(Integer id){
25         System.out.println("This is userServiceImpl");
26         ur.deleteByCustomerId(id);
27     }
28     public void saveUser(user user){
29         ur.save(user);
30 
31     }
32 }

 

5.HeController.java

 1 package com.example.demo.web;
 2 import org.springframework.stereotype.Controller;
 3 import org.springframework.ui.Model;
 4 import org.springframework.web.bind.annotation.PathVariable;
 5 import org.springframework.web.bind.annotation.RequestMapping;
 6 import com.example.demo.userService.userService;
 7 import com.example.demo.beans.user;
 8 import org.springframework.web.bind.annotation.RequestParam;
 9 
10 import javax.annotation.Resource;
11 import javax.servlet.http.HttpServletRequest;
12 import java.util.List;
13 
14 @Controller
15 @RequestMapping("index.do")
16 public class HeController {
17 
18    @Resource
19     private userService userService;
20 
21     @RequestMapping("/index")
22     public String aaa(){
23         return "index";
24     }
25     @RequestMapping("info/login")
26     public String bbb(HttpServletRequest r,Model model){
27         String name_ = r.getParameter("name");
28         String falg_ = r.getParameter("falg");
29          List<user> users =userService.getUserList();
30          for(user u:users){
31              System.out.println(u.getName());
32              System.out.println(u.getFalg());
33          }
34          model.addAttribute("users",users);
35         return "login";
36     }
37     @RequestMapping("/toEdit/{id}")
38     public String edit(Model model,@PathVariable Integer id){
39         System.out.println("__"+id);
40        List<user> u = userService.findUserById(id);
41        user uu = new user();
42        String a ="";
43        String b ="";
44        for(int i=0;i<u.size();i++){
45            a = u.get(i).getName();
46            b =  u.get(i).getFalg();
47        }
48        uu.setId(id);
49        uu.setName(a);
50        uu.setFalg(b);
51        model.addAttribute("user",uu);
52         return "edit";
53     }
54     @RequestMapping("/info/saveEd")
55     public String saveEd(HttpServletRequest request){
56         String id = request.getParameter("id");
57         String name = request.getParameter("name");
58         String falg = request.getParameter("falg");
59 
60         System.out.println("saveEd"+name+"--"+falg);
61         user u = new user();
62         u.setId(Integer.parseInt(id));
63         u.setName(name);
64         u.setFalg(falg);
65         userService.edit(u);
66         return "redirect:/index.do/info/login";
67     }
68     @RequestMapping("/toDel/{id}")
69     public String del(@PathVariable("id") Integer id){
70         System.out.println(id+"--id");
71         userService.del(id);
72         return "redirect:/index.do/info/login";
73     }
74     @RequestMapping("info/insert")
75     public String insert(){
76         System.out.println("insert");
77         return "add";
78     }
79     @RequestMapping("/toAdd")
80     public String add(HttpServletRequest request){
81         System.out.println("--add");
82         String name = request.getParameter("name");
83         String falg = request.getParameter("falg");
84         user u = new user();
85         u.setName(name);
86         u.setFalg(falg);
87         userService.saveUser(u);
88         return "redirect:/index.do/info/login";
89     }
90 }

6.add.html

 1 <!DOCTYPE html>
 2 <html xmlns:th="http://www.thymeleaf.org">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Spring-boot-add</title>
 6 </head>
 7 <body>
 8 <form action="/index.do/toAdd" method="post">
 9     <table>
10         <tr>
11             <td>name:<input type="text"  name="name"></td>
12         </tr>
13         <tr>
14             <td>falg:<input type="text" name="falg"></td>
15         </tr>
16         <tr>
17             <td><input type="submit" value="submit"></td>
18         </tr>
19     </table>
20 </form>
21 </body>
22 </html>

 

7.edit.html

 1 <!DOCTYPE html>
 2 <html xmlns:th="http://www.thymeleaf.org">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Spring-boot-edit</title>
 6 </head>
 7 <body>
 8 <form th:action="@{/index.do/info/saveEd}" method="post">
 9     <table>
10         <tr >
11 
12             <td><input type="text" th:value="${user.name }" th:name="name"><input type="hidden" th:value="${user.id}" th:name="id"> </td>
13         </tr>
14         <tr>
15             <td><input type="text" th:value="${user.falg }" th:name="falg"></td>
16         </tr>
17         <tr>
18             <td><input  value="修改" type="submit"/></td>
19         </tr>
20     </table>
21 
22 </form>
23 </body>
24 </html>

 

8.index.html

 1 <!DOCTYPE html>
 2 <html xmlns:th="http://www.thymeleaf.org">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Spring-Boot-Web-index</title>
 6 </head>
 7 <body>
 8 <a href="/index.do/info/login">進入</a>
 9 </body>
10 </html>

 

9.login.html

 1 <!DOCTYPE html>
 2 <html xmlns:th="http://www.thymeleaf.org">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Spring-boot-login</title>
 6     <link rel="stylesheet" th:href="@{/css/bootstrap.css}"></link>
 7 </head>
 8 <script>
 9 
10 </script>
11 <body>
12 <div class="with:80%">
13     <table class="table table-hover">
14         <tr><td><a href="/index.do/info/insert" >add</a></td></tr>
15         <tr>
16             <th>id</th>
17             <th>User Name</th>
18             <th>Password</th>
19             <th>edit</th>
20             <th>delete</th>
21         </tr>
22 
23         <tbody>
24         <tr th:each="u : ${users}">
25              <td th:text="${u.id}"></td>
26             <td th:text="${u.name }"></td>
27             <td th:text="${u.falg }">u.falg</td>
28            <td><a th:href="@{'/index.do/toEdit/'+${u.id}}">edit</a></td>
29             <td><a th:href="@{'/index.do/toDel/'+${u.id}}">delete</a></td>
30         </tr>
31         </tbody>
32     </table>
33 </div>
34 </body>
35 </html>

 

10.pom.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 3          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 4     <modelVersion>4.0.0</modelVersion>
 5 
 6     <groupId>com.example</groupId>
 7     <artifactId>demo</artifactId>
 8     <version>0.0.1-SNAPSHOT</version>
 9     <packaging>jar</packaging>
10 
11     <name>demo</name>
12     <description>Demo project for Spring Boot</description>
13 
14     <parent>
15         <groupId>org.springframework.boot</groupId>
16         <artifactId>spring-boot-starter-parent</artifactId>
17         <version>2.0.6.RELEASE</version>
18         <relativePath/> <!-- lookup parent from repository -->
19     </parent>
20 
21     <properties>
22         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
23         <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
24         <java.version>1.8</java.version>
25         <!-- set thymeleaf version -->
26         <thymeleaf.version>3.0.9.RELEASE</thymeleaf.version>
27         <thymeleaf-layout-dialect.version>2.2.2</thymeleaf-layout-dialect.version>
28     </properties>
29 
30 
31     <dependencies>
32         <dependency>
33             <groupId>org.springframework.boot</groupId>
34             <artifactId>spring-boot-starter</artifactId>
35         </dependency>
36       <!--  新增支援web的模組 -->
37         <dependency>
38             <groupId>org.springframework.boot</groupId>
39             <artifactId>spring-boot-starter-web</artifactId>
40         </dependency>
41         <!--spring boot tomcat(預設可以不用配置,但當需要把當前web應用佈置到外部servlet容器時就需要配置,並將scope配置為provided)-->
42         <dependency>
43             <groupId>org.springframework.boot</groupId>
44             <artifactId>spring-boot-starter-tomcat</artifactId>
45             <scope>provided</scope>
46         </dependency>
47         <!--  pom.xml檔案中預設有兩個模組: -->
48         <!--  spring-boot-starter:核心模組,包括自動配置支援、日誌和YAML; -->
49         <!--  spring-boot-starter-test:測試模組,包括JUnit、Hamcrest、Mockito。 -->
50         <dependency>
51             <groupId>org.springframework.boot</groupId>
52             <artifactId>spring-boot-starter-test</artifactId>
53             <scope>test</scope>
54         </dependency>
55         <!--   SpringBoot中使用Thymeleaf模板   -->
56         <dependency>
57             <groupId>org.springframework.boot</groupId>
58             <artifactId>spring-boot-starter-thymeleaf</artifactId>
59         </dependency>
60         <!--   啟動專案熱部署  -->
61         <dependency>
62             <groupId>org.springframework.boot</groupId>
63             <artifactId>spring-boot-devtools</artifactId>
64             <optional>true</optional>
65         </dependency>
66         <!-- Hibername 的 spring data jpa -->
67         <dependency>
68             <groupId>org.springframework.boot</groupId>
69             <artifactId>spring-boot-starter-data-jpa</artifactId>
70         </dependency>
71         <!-- mysql資料庫 -->
72         <dependency>
73             <groupId>mysql</groupId>
74             <artifactId>mysql-connector-java</artifactId>
75         </dependency>
76     </dependencies>
77 
78     <build>
79         <plugins>
80             <plugin>
81                 <groupId>org.springframework.boot</groupId>
82                 <artifactId>spring-boot-maven-plugin</artifactId>
83                 <configuration><fork>true</fork></configuration>
84             </plugin>
85         </plugins>
86     </build>
87 
88 
89 </project>

 

11.application.properties

 1 #快取關閉
 2 spring.thymeleaf.cache=false
 3 #識別templates/下的檔案
 4 spring.thymeleaf.prefix=classpath:/templates/
 5 # 熱部署開關,false即不啟用熱部署
 6 spring.devtools.restart.enabled: true
 7 #   Mysql 資料庫配置   bigen
 8 spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC&useSSL=true
 9 spring.datasource.username=root
10 spring.datasource.password=root
11 spring.datasource.driver-class-name=com.mysql.jdbc.Driver
12 #  Mysql 資料庫配置   end
13 #  hibernate 的jpa  bigen
14 spring.jpa.properties.hibernate.hbm2ddl.auto=update
15 spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
16 spring.jpa.show-sql= true
17 #  hibernate 的jpa  end

                                                                           

                                                                                                             能力有限,有許多不足,以上內容僅供參考  

  參考大神網站(純潔的微笑):http://www.ityouknow.com/springboot/2016/08/20/spring-boo-jpa.html

                                                   http://www.ityouknow.com/springboot/2016/02/03/spring-boot-web.html

                                                   http://www.ityouknow.com/springboot/2016/05/01/spring-boot-thymeleaf.html