5、spring-data-Jpa 數據庫操做

概述:java persistence API定義了一些列對象持久化的標準,目前實現這一規範的產品有hibernate、topLinkjava

      1、pom.xml中添加組件mysql

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jpa</artifactId>
</dependency>

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-comector-java</artifactId>
</dependency>

      2、配置數據庫相關信息web

      在application.yml中配置(在這裏配置生產環境和開發環境均可以使用)
idea中鍵入spring.datasoure. driver快捷輸入(我也忘了driver前是否加空格了)
datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/dbgril
    username: root
    password: root
3、一些數據庫的相關操做
   create 
      每次啓動應用建立一個空表,若數據庫中有同名表則把舊錶刪除後再建立
   update
      每次啓動應用建立一個表,若是數據庫表中有數據,仍然保留數據
   create-drop
      應用中止的時候,將數據庫中的表刪除
   none
      默認的,什麼都不作
   Validate
      驗證類中的屬性和表結構是否一致,若不一致則報錯
spring:
  profiles:
    active: dev
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/dbgril
    username: root
    password: root
  jpa:
    hibernate:
      ddl-auto: update
    show-sql: true
4、對數據的一些操做
PUT請求方式body不能使用form-data,須要使用x-www-form-urlencoded
  1. 建立實體類
        @Entity 在類名上須要添加該註解
      @Id 在id變量上添加該註解聲明主鍵
      @GeneratedValue 在id變量上聲明該註解表示自動新增
        添加get、set方法以及構造方法
  2. 聲明一個接口並繼承JpaRepository<T,ID>
      T:實體類的類名
       ID:Id的數據類型
import org.springframework.data.jpa.repository.JpaRepository;

import java.util.List;

public interface GrilRepository extends JpaRepository<Gril,Integer>{
    //拓展經過年齡查詢
    public List<Gril> findByAge(Integer age);
}
  3. 建一個類用 @RestController註解,
        使用 @Autowired 將接口類注入(簡單示例)
  4.使用對象的方式進行數據庫的交互
    建立一個方法使用 Mapping 註解,並在方法內使用jpa提供的數據庫的操做方法
      findAll()  查詢全部
      findOne(id) 經過id查找一個數據庫對象
      delete(id) 經過id刪除一個數據庫對象
      save(S s)  新增或者修改
(若是不傳主鍵id進行新增操做;若是傳遞了主鍵id,先在數據庫中根據id查找是否有數據,若是沒有則新增,若是有則修改)
 若是遇到修改部分數據的時候,使用對象的方式保存會致使其它的字段賦值爲null
    第一種解決方式:使用原生的sql進行更新
    第二種解決方式:先進行findOne(id)查找對象,而後set完要更新的字段,最後進行save(gril)更新
  5.拓展經過其它變量查詢數據庫值
  在接口中定義抽象方法;
public List<Gril> findByAge(Integer age);
附:code示例
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
public class GrilController {
    @Autowired
    private GrilRepository grilRepository;
    //查詢女生列表
    @GetMapping(value = "/grils")
    public List<Gril> girlList(){
        List<Gril> list = grilRepository.findAll();
        return list;
    };
    //添加一個女生
    @PostMapping(value = "/grils")
    public Gril grilAdd(@RequestParam("cupSize")String cupSize,
                          @RequestParam("age")Integer age){
        Gril gril = new Gril();
        gril.setCupSize(cupSize);
        gril.setAge(age);

        return  grilRepository.save(gril);
    }
    //經過id查詢一個女生
    @GetMapping(value = "/grils/{id}")
    public Gril grilFindOne(@PathVariable("id") Integer id){
        Gril gril = grilRepository.findOne(id);
        return gril;
    }
    //經過id更新一個女生
    @PutMapping(value = "/grils/{id}")
    public Gril grilUpdate(@PathVariable("id")Integer id,
                           @RequestParam("cupSize")String cupSize,
                           @RequestParam("age")Integer age){
        Gril gril = new Gril();
        gril.setId(id);
        gril.setCupSize(cupSize);
        gril.setAge(age);

        return  grilRepository.save(gril);
    }
//經過id刪除一個女生
    @DeleteMapping(value = "/grils/{id}")
    public void grilDlete(@PathVariable("id")Integer id){
        grilRepository.delete(id);
    }

    //經過年齡查詢
    @GetMapping("/grils/age/{age}")
    public List<Gril> findByAge(@PathVariable(value = "age") Integer age){

          return  grilRepository.findByAge(age);

    }
}
相關文章
相關標籤/搜索