1. 程式人生 > >spring boot資料庫操作(以mysql為例)

spring boot資料庫操作(以mysql為例)

  • 新增資料庫支援

    在maven中新增元件(pom.xml)

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId
>
<artifactId>mysql-connector-java</artifactId> </dependency>
  • 配置datasource和jpa(application.yml)

    為mysql和jpa新增配置

spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/dbGirl
    username: root
    password: 123456
jpa: hibernate: ddl-auto: update show-sql: true

注:jpa配置中ddl-auto有多種選擇
這裡寫圖片描述

create 應用啟動即清空資料庫所有表重新建立
create-drop 應用停止時就會刪掉所有表
none 預設不執行任何操作
update 第一次執行建立表結構,與create不同點在於不會刪除原有資料
validate 驗證類屬性是否與表結構一致,不一致會報錯
  • 建立java bean類,為類新增@Entity註解
import javax.persistence.Entity;
import
javax.persistence.GeneratedValue; import javax.persistence.Id; @Entity public class Girl { @Id //將id設為主鍵 @GeneratedValue //設定Id自增長 private Integer id ; private String name ; private Integer age ; public Girl() { }; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } }

注意包不要導錯,包不要導錯,包不要導錯~

  • 建立對應介面繼承JpaRepository
import org.springframework.data.jpa.repository.JpaRepository;

//<Girl,Integer>,第一個為需要操作的bean類,第二個引數為bean類中的Id型別,即對應資料庫表中的主鍵型別
public interface GirlRepository extends JpaRepository<Girl,Integer> {
}
  • 在Controller中建立例項,通過Jpa呼叫操作資料庫方法。
@RestController
public class GirlController {

    @Autowired
    private GirlRepository girlRepository;

    //通過get方法查詢女生列表
    @GetMapping(value = "/girls")
    public List<Girl> girls(){
        return girlRepository.findAll();
    }

    //通過post方法新增女生列表
    @PostMapping(value = "/girls")
    public Girl girls(@RequestParam("name") String name,@RequestParam("age") Integer age){
        Girl girl = new Girl();
        girl.setAge(age);
        girl.setName(name);
        return girlRepository.save(girl);
    }
}

此外事務管理通過在函式上新增@Transactional註解

@Autowired
    private GirlRepository girlRepository;

    @Transactional
    public void saveTwo(){
        Girl girlA = new Girl();
        girlA.setName("星星");
        girlA.setAge( 12 );
        girlRepository.save(girlA);

        Girl girlB = new Girl();
        girlB.setName("The Apple");
        girlB.setAge( 11 );
        girlRepository.save(girlB);
    }

PS:post方法可以通過下載安裝Postman進行測試,很不錯的工具