1. 程式人生 > >springboot 整合mybatis 進行數據庫操作(JPA)

springboot 整合mybatis 進行數據庫操作(JPA)

post connect turn hashmap jdbc myba tex writev utm

上一篇成功搭建springboot項目之後,我們來實現springboot 整合mybatis ,操作數據庫。

首先創建一個ademo項目,我先把我的項目結構放在這裏,進行解釋

PersonController 是接受請求並使用對應方法來處理請求操作;

PersonRepository 這裏使用了JPA接口,JPA封裝了底層的數據庫操作,PersonRepository使用JPA聲明的方法就可以直接進行數據庫操作;

Person 是實體類,這裏進行數據類型聲明,實現get(),set()方法,類名要與對應的數據庫表名一致;

application.properties 是配置數據庫連接,相對於spring,springboot會直接讀取這裏的配置連接數據庫,但不適用於多數據源。

pom.xml 在這裏添加依賴,導入對應jar包

技術分享圖片

在建立好項目後,我們先把對應的配置文件做好,這裏我們直接在pom.xml文件中添加依賴,調用jar包

下面是要添加的依賴,只需添加沒有的依賴就行,其他的不用更改

技術分享圖片
 1 <dependencies>
 2         <dependency>
 3             <groupId>org.springframework.boot</groupId>
 4             <artifactId>spring-boot-starter-data-jpa</artifactId
> 5 </dependency> 6 <dependency> 7 <groupId>org.springframework.boot</groupId> 8 <artifactId>spring-boot-starter-jdbc</artifactId> 9 </dependency> 10 <dependency> 11 <groupId>
org.springframework.boot</groupId> 12 <artifactId>spring-boot-starter-web</artifactId> 13 </dependency> 14 15 <dependency> 16 <groupId>mysql</groupId> 17 <artifactId>mysql-connector-java</artifactId> 18 <scope>runtime</scope> 19 </dependency> 20 <dependency> 21 <groupId>org.springframework.boot</groupId> 22 <artifactId>spring-boot-starter-test</artifactId> 23 <scope>test</scope> 24 </dependency> 25 26 <dependency> 27 <groupId>org.springframework.boot</groupId> 28 <artifactId>spring-boot-configuration-processor</artifactId> 29 <optional>true</optional> 30 </dependency> 31 </dependencies> 32
View Code

數據庫操作,第一步是先連接數據庫,可以在application.properties中直接配置

註意:這裏的localhost:3306是你的數據庫連接,test是數據庫名

spring.datasource.driver-class-name=com.mysql.jdbc.Driver
 
spring.datasource.url=jdbc:mysql://localhost:3306/test
 
spring.datasource.username=root
 
spring.datasource.password=root

第二步,建立Person實體類,這個類中的類名要在你的數據庫中存在(不存在的話,springboot會逆向生成表),這裏的id,name是表中的名稱,要註意變量的類型與數據庫名稱類型一致;

另外,這裏使用的@Entity 是聲明映射Person這個實體類,@Id標註用於聲明一個實體類的屬性映射為數據庫的主鍵列。,@GeneratedValue用於標註主鍵的生成策略

註意:因為這裏使用了@Id標簽,所以進行數據添加操作時,不能隨意創建記錄

技術分享圖片
 1 package com.example.ademo.Person;
 2  
 3 import org.springframework.boot.context.properties.ConfigurationProperties;
 4 import org.springframework.stereotype.Component;
 5  
 6 import javax.persistence.Entity;
 7 import javax.persistence.GeneratedValue;
 8 import javax.persistence.Id;
 9  
10 @Entity
11 public class Person {
12     @Id
13     @GeneratedValue
14     private int id;
15     private int name;
16  
17     public Person(){
18  
19     }
20     public Person(int id,int name){
21         this.id = id;
22         this.name = name;
23     }
24  
25     public int getId() {
26         return id;
27     }
28  
29     public void setId(int id) {
30         this.id = id;
31     }
32  
33     public int getName() {
34         return name;
35     }
36  
37     public void setName(int name) {
38         this.name = name;
39     }
40 }
Person

第三步,我們既然連接到了數據庫,又拿到了實體類,接下來我們就要進行數據庫操作的聲明了,直接繼承JpaRepository接口,進行底層數據庫操作

1 package com.example.ademo.dao;
2  
3 import com.example.ademo.Person.Person;
4 import org.springframework.data.jpa.repository.JpaRepository;
5  
6 public interface PersonRepository extends JpaRepository<Person,Integer> {
7 }

第四步,數據庫操作有了,那我們要使用對應的方法操作就不難了,

技術分享圖片
 1 package com.example.ademo.controller;
 2  
 3 @RestController
 4 public class PersonController {
 5     @Autowired
 6     private PersonRepository personRepository;
 7  
 8  
 9     //查看全部
10     @RequestMapping(value="/hello",method = RequestMethod.GET)
11     public void  sau(HttpServletResponse response) throws IOException {
12  
13         List<Person> list =  personRepository.findAll();
14         Map<Integer,Integer> map = new HashMap<Integer,Integer>();
15         for(Person p:list)
16             map.put(p.getId(),p.getName());
17         ObjectMapper json = new ObjectMapper();
18         String ss = json.writeValueAsString(map);
19         PrintWriter out = response.getWriter();
20         out.print(ss);
21         out.flush();
22         out.close();
23     }
24     //添加一個
25     @PostMapping(value = "/hello")
26     public Person addPerson(@RequestParam("id") Integer id,@RequestParam("name") Integer name){
27         Person person = new Person();
28         person.setId(id);
29         person.setName(name);
30         return personRepository.save(person);
31     }
32     @GetMapping(value = "/hello/add")
33     public Person addPerson1(@RequestParam("id") Integer id,@RequestParam("name") Integer name){
34         Person person = new Person();
35         person.setId(id);
36         person.setName(name);
37         return personRepository.save(person);
38     }
39  
40  
41     //修改一個
42     @PutMapping(value = "/hello/{id}")
43     public Person updatePerson(@PathVariable("id") Integer id,@RequestParam("name") Integer name){
44         Person person = new Person();
45         person.setId(id);
46         person.setName(name);
47         return personRepository.save(person);
48     }
49     @GetMapping(value = "/hello/upd")
50     public Person updPerson(@RequestParam("id") Integer id,@RequestParam("name") int name){//@PathVariable("id") Integer id){
51         Person person = findOne(id);
52         person.setName(name);
53         return personRepository.save(person);
54     }
55  
56     //查找一個
57     @GetMapping(value = "/hello/{id}")
58     public Person findOne(@PathVariable("id") Integer id){
59         return personRepository.findById(id).orElse(null);
60     }
61  
62     //刪除
63    @GetMapping(value = "/hello/del/{id}")
64     public void deletePerson(@PathVariable("id") Integer id){
65         Person person = findOne(id);
66         personRepository.delete(person);
67     }
68 }
PersonController

這樣我們的項目就算完成了,看一下效果吧。

查看全部數據

技術分享圖片

查看ID是3的數據

技術分享圖片

添加一個ID是5的記錄

技術分享圖片

把name改成99

技術分享圖片

刪除id是3的數據

技術分享圖片

技術分享圖片

ok,沒有問題

springboot 整合mybatis 進行數據庫操作(JPA)