javajava

springBoot的数据库操作

 一:操作数据库起步

1.Spring-Data-Jpa

  JPA定义了对象持久化的标准。

  目前实现了有Hibernate,TopLink

 

2.pom添加依赖

复制代码
1         <dependency>
2             <groupId>org.springframework.boot</groupId>
3             <artifactId>spring-boot-starter-data-jpa</artifactId>
4         </dependency>
5 
6         <dependency>
7             <groupId>mysql</groupId>
8             <artifactId>mysql-connector-java</artifactId>
9         </dependency>
复制代码

 

3.对jps进行配置

复制代码
 1   spring:  2     profiles:  3     active: dev  4     datasource:  5   driver-class-name: com.mysql.jdbc.Driver  6     url: jdbc:mysql://127.0.0.1:3308/people?useSSL=false   7     username: root   8     password: 123456   9   jpa:  10     hibernate:  11     ddl-auto: create  12     show-sql: true
复制代码

 

4.新建一个people的数据库

  CREATE DATABASE IF NOT EXISTS yiibaidb DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

   不然,程序会报未发现数据库。

  但是,表不需要新建,这个通过类就可以生成。

 

5.student的类

  可以映射成数据库的字段。

  Entity注解表示:类对应一个数据库的一个表。

复制代码
 1 package com.caojun.springboot;   2 
 3 import javax.persistence.Entity;   4 import javax.persistence.GeneratedValue;   5 import javax.persistence.Id;   6 
 7 @Entity   8 public class Student {  9 
10     @Id 11     @GeneratedValue 12     private Integer id; 13     private String name; 14     private Integer age; 15 
16     public Student(){ 17 
18     } 19 
20     public Integer getId() { 21         return id; 22     } 23 
24     public void setId(Integer 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 Integer getAge() { 37         return age; 38     } 39 
40     public void setAge(Integer age) { 41         this.age = age; 42     }  43 }
复制代码

 

6.自动生成数据库

 

 

7.注意点

  配置文件的ddi-auto:create

  意思的每次启动的时候都会把数据库清空。

  

  ddl-auto:update

  如果没有表,会自动创建,但是如果里面有数据,就不会清空数据。

 

二:操作数据的API

1.新建类(继续使用上面的Sytdent.java类)

 

2.新建接口

1 package com.caojun.springboot; 2 
3 import org.springframework.data.jpa.repository.JpaRepository; 4 
5 public interface StudentResitory extends JpaRepository<Student,Integer> { 6 }

 

3.新建controller类  

查询数据库中的所有
复制代码
 1 package com.caojun.springboot;   2 
 3 import org.springframework.beans.factory.annotation.Autowired;   4 import org.springframework.web.bind.annotation.GetMapping;   5 import org.springframework.web.bind.annotation.RestController;   6 
 7 import java.util.List;   8 
 9 @RestController  10 public class StudentController {  11 
12     @Autowired  13     private StudentResitory studentResitory;  14 
15     /**
16      * 查询数据库中的所有 17      * @return
18      */
19     @GetMapping(value = "/hello")  20     public List<Student> getStuList(){  21         return studentResitory.findAll();  22     }  23 }
复制代码

 

4.效果

 

5.添加一个学生记录

复制代码
 1     /**
 2      * 添加一个学生记录   3      */
 4     @PostMapping(value = "/hello")   5     public Student addStu(@RequestParam("name") String name,@RequestParam("age") Integer age){   6         Student stu=new Student();   7         stu.setName(name);   8         stu.setAge(age);   9         return studentResitory.save(stu);  10     }
复制代码

 

6.效果

 

7.查询一个人,根据id

复制代码
1 /**
2      * 查询一个学生,根据字段id 3      */
4     @GetMapping(value = "/hello/{id}")  5     public Student getStu(@PathVariable("id") Integer id){  6         return studentResitory.findOne(id); 7     }
复制代码

 

8.效果

 

9.更新

复制代码
 1 /**
 2      * 更新数据库   3      */
 4     @PutMapping(value = "/hello/{id}")   5     public Student updateStu(@PathVariable("id") Integer id,   6                              @RequestParam("name") String name,   7                              @RequestParam("age") Integer age ){   8         Student stu=new Student();   9         stu.setId(id);  10         stu.setName(name);  11         stu.setAge(age);  12         return studentResitory.save(stu);  13     }
复制代码

 

10.效果

 

11.删除

复制代码
1 /**
2      * 删除数据 3      */
4     @DeleteMapping(value = "/hello/{id}") 5     public void deleteStu(@PathVariable("id") Integer id){ 6         studentResitory.delete(id); 7     }
复制代码

 

12.效果

  

 

三:扩展

1.通过年龄还来查询

 

2.扩展接口

  这个方法名比较有讲究。

复制代码
 1 package com.caojun.springboot;    2 
 3 import org.springframework.data.jpa.repository.JpaRepository;   4 
 5 import java.util.List;   6 
 7 public interface StudentResitory extends JpaRepository<Student,Integer> {   8     
 9     //根据年龄来查询数据
10     public List<Student> findByAge(Integer age);  11 }
复制代码

 

3.程序

复制代码
1 /**
2      * 根据年龄进行查询  3      */
4     @GetMapping(value = "/hello/age/{age}")  5     public List<Student> getStuList(@PathVariable("age") Integer age){  6         return studentResitory.findByAge(age);  7     }
复制代码

 

4.效果

Publish Comment发表评论

点击刷新验证码 点击图片可刷新验证码

Comment网友评论

詹绍乾 Jancy © 版权所有 2020

Copyright © 2010 by zhansq.cn All right reserved.