springboot 整合mybatis 進行數據庫操作(JPA)
阿新 • • 發佈:2018-08-05
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</artifactIdView Code> 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
數據庫操作,第一步是先連接數據庫,可以在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)