springboot2+jpa+hikari+oracle實戰


1.技術選型


 

jpa:簡單方便,基於Spring構建,簡化了持久層開發,只要繼承Repository就有簡單的增刪改查功能了,且自帶分頁功能

hikari:最快的數據庫連接池,springboot2自帶,不需要用到監控頁面的話推薦使用hikari

oracle:生產環境最常用

 

2.代碼實例


 

主要依賴pom.xml:

 1     <dependencies>
 2         <dependency>
 3             <groupId>org.springframework.boot</groupId>
 4             <artifactId>spring-boot-starter-web</artifactId>
 5         </dependency>
 6         <dependency>
 7             <groupId>org.springframework.boot</groupId>
 8             <artifactId>spring-boot-starter-data-jpa</artifactId>
 9         </dependency>
10         <dependency>
11             <groupId>com.oracle</groupId>
12             <artifactId>ojdbc7</artifactId>
13             <version>12.1.0.1.0</version>
14         </dependency>
15         <!--很不錯的一個工具類庫-hutool,推薦使用-->
16         <dependency>
17             <groupId>cn.hutool</groupId>
18             <artifactId>hutool-all</artifactId>
19             <version>5.4.2</version>
20         </dependency>

 

 配置文件application.yml:

 1 spring:
 2   datasource:
 3     ##使用hikari數據源
 4     type: com.zaxxer.hikari.HikariDataSource
 5     ##使用oracle連接驅動
 6     driver-class-name: oracle.jdbc.driver.OracleDriver
 7     ##數據庫連接地址
 8     url: jdbc:oracle:thin:@000.000.000.000:1520:orcl
 9     ##數據庫連接用戶名
10     username: xxx
11     ##數據庫連接密碼
12     password: xxxxxx
13     hikari:
14       ##池中維護的最小空閑連接數
15       minimum-idle: 5
16       ##池中最大連接數,包括閑置和使用中的連接
17       maximum-pool-size: 15
18       ##自動提交從池中返回的連接
19       auto-commit: true
20       ##連接允許在池中閑置的最長時間
21       idle-timeout: 30000
22       ##連接池的用戶定義名稱,主要出現在日志記錄和JMX管理控制台中以識別池和池配置
23       pool-name: DatebookHikariCP
24       ##池中連接最長生命周期
25       max-lifetime: 18000000
26       ##等待來自池的連接的最大毫秒數
27       connection-timeout: 30000
28       ##驗證該連接是否是有效的查詢語句
29       connection-test-query: select 1 from dual

 

jpa自動生成實體類TestUserEntity:

 1 package com.project.demo.spring.boot.model;
 2 
 3 import javax.persistence.*;
 4 import java.util.Objects;
 5 
 6 /**
 7  * @author:wk
 8  * @date:2020/9/16
 9  */
10 @Entity
11 @Table(name = "TEST_USER", schema = "TW_E", catalog = "")
12 public class TestUserEntity {
13     private String name;
14     private String password;
15     private String phoneNo;
16     private String remark;
17     private String id;
18 
19     @Basic
20     @Column(name = "NAME")
21     public String getName() {
22         return name;
23     }
24 
25     public void setName(String name) {
26         this.name = name;
27     }
28 
29     @Basic
30     @Column(name = "PASSWORD")
31     public String getPassword() {
32         return password;
33     }
34 
35     public void setPassword(String password) {
36         this.password = password;
37     }
38 
39     @Basic
40     @Column(name = "PHONE_NO")
41     public String getPhoneNo() {
42         return phoneNo;
43     }
44 
45     public void setPhoneNo(String phoneNo) {
46         this.phoneNo = phoneNo;
47     }
48 
49     @Basic
50     @Column(name = "REMARK")
51     public String getRemark() {
52         return remark;
53     }
54 
55     public void setRemark(String remark) {
56         this.remark = remark;
57     }
58 
59     @Override
60     public boolean equals(Object o) {
61         if (this == o) return true;
62         if (o == null || getClass() != o.getClass()) return false;
63         TestUserEntity that = (TestUserEntity) o;
64         return Objects.equals(name, that.name) &&
65                 Objects.equals(password, that.password) &&
66                 Objects.equals(phoneNo, that.phoneNo) &&
67                 Objects.equals(remark, that.remark);
68     }
69 
70     @Override
71     public int hashCode() {
72         return Objects.hash(name, password, phoneNo, remark);
73     }
74 
75     @Id
76     @Column(name = "ID")
77     public String getId() {
78         return id;
79     }
80 
81     public void setId(String id) {
82         this.id = id;
83     }
84 }

 

創建TestUserRepository,繼承JpaRepository,可實現簡單的增刪改查,TestUserEntity和String參數為實體類和主鍵,加@Query注解實現自定義查詢語句:

 1 package com.project.demo.spring.boot.repository;
 2 
 3 import com.project.demo.spring.boot.model.TestUserEntity;
 4 import org.springframework.data.jpa.repository.JpaRepository;
 5 import org.springframework.data.jpa.repository.Query;
 6 import org.springframework.data.repository.query.Param;
 7 
 8 import java.util.List;
 9 
10 /**
11  * @author:wk
12  * @date:2020/9/16
13  */
14 public interface TestUserRepository extends JpaRepository<TestUserEntity, String> {
15 
16     /**
17      * 自定義查詢語句接口
18      *
19      * @param name
20      * @return
21      */
22     @Query(nativeQuery = true, value = "SELECT * FROM TEST_USER WHERE name = :name  ")
23     List<TestUserEntity> findUserByName(@Param("name") String name);
24 }

 

 測試用的controller:

 1 package com.project.demo.spring.boot.controller;
 2 
 3 import cn.hutool.core.collection.CollectionUtil;
 4 import com.project.demo.spring.boot.model.TestUserEntity;
 5 import com.project.demo.spring.boot.repository.TestUserRepository;
 6 import org.springframework.beans.factory.annotation.Autowired;
 7 import org.springframework.stereotype.Controller;
 8 import org.springframework.web.bind.annotation.*;
 9 
10 import java.util.List;
11 
12 /**
13  * @author:wk
14  * @date:2020/9/11
15  */
16 @ResponseBody
17 @Controller
18 @RequestMapping("/demo")
19 public class TestUserController {
20     @Autowired
21     private TestUserRepository testUserRepository;
22 
23     @GetMapping("/getAllUser")
24     public List<TestUserEntity> getAllUser() {
25         List<TestUserEntity> allUser = testUserRepository.findAll();
26         return allUser;
27     }
28 
29     @PostMapping("/saveAllUser")
30     public List<TestUserEntity> saveAllUser(@RequestBody List<TestUserEntity> resource) {
31         List<TestUserEntity> allUser = CollectionUtil.newArrayList(resource);
32         List<TestUserEntity> successUser = testUserRepository.saveAll(allUser);
33         return successUser;
34     }
35 
36     @DeleteMapping("/deleteUserById")
37     public String deleteUserById(@RequestBody String ids) {
38         List<String> idList = CollectionUtil.toList(ids.split(","));
39         idList.parallelStream().forEach(id -> testUserRepository.deleteById(id));
40         return "success";
41     }
42 
43     @GetMapping("/findUserByName")
44     public List<TestUserEntity> findUserByName(@RequestBody String name) {
45         List<TestUserEntity> allUser = testUserRepository.findUserByName(name);
46         return allUser;
47     }
48 
49 }

 

3.演示


 

新增兩個用戶,添加成功:

 

獲取到所有的user:

 

 調用自定義查詢接口,通過name查找用戶:

 

 

 刪除id為1和2的用戶

 

成功刪除后查詢為空:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM