首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Spring Boot入門實戰:整合JPA操作MySQL數據庫

     編輯:Java 相關知識

Spring Boot極大地簡化了Spring應用的初始配置,配合Spring Data JPA可輕鬆實現數據持久層開發。本文以一個完整的示例項目,演示從項目創建、實體定義、Repository接口編寫、到控制器測試的全流程。

一、項目初始化與基礎配置

  1. 訪問 start.spring.io,Artifact 填 spring-boot-sample-mysql,勾選 Web → Web、SQL → JPA、MySQL,生成並下載項目。
  2. 解壓後導入 Eclipse:File → Import → Existing Maven Projects 選中項目目錄完成導入。
  3. 在 com.example 下創建 web 包,引入簡單的 HelloController 與 logback.xml 驗證項目啟動正常。

二、領域模型與數據訪問層

1. 實體類 Person

package com.example.domain;

import javax.persistence.*;

@Entity
public class Person {
    @Id @GeneratedValue private Long id;
    private String name;
    private Integer age;
    private String address;

    // 無參構造器、全參構造器、Getter/Setter 略
}

使用 @Entity 標記為持久化實體,@Id+@GeneratedValue 實現主鍵自增。

2. Repository 接口 PersonRepository

package com.example.repository;

import com.example.domain.Person;
import org.springframework.data.jpa.repository.*;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
import java.util.List;

@Repository
public interface PersonRepository extends JpaRepository<Person, Long> {
    List<Person> findByName(String name);
    List<Person> findByAddress(String address);
    List<Person> findByNameAndAddress(String name, String address);

    @Query("select p from Person p where p.name=:name and p.address=:address")
    List<Person> withNameAndAddressQuery(@Param("name") String name, @Param("address") String address);
}

繼承 JpaRepository 即可獲得基本 CRUD,方法命名規約自動生成查詢,複雜條件可用 @Query 編寫 JPQL。

三、控制器與業務邏輯

package com.example.web;

import com.example.domain.Person;
import com.example.repository.PersonRepository;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.*;
import org.springframework.web.bind.annotation.*;

@RestController
public class DataController {
    private static final Logger log = LoggerFactory.getLogger(DataController.class);

    @Autowired PersonRepository personRepository;

    @RequestMapping("/save")
    public Person save(String name, String address, Integer age) {
        log.debug("save 開始");
        Person p = personRepository.save(new Person(null, name, age, address));
        log.debug("save 結束");
        return p;
    }

    @RequestMapping("/q1") public List<Person> q1(String address) {
        return personRepository.findByAddress(address);
    }
    @RequestMapping("/q2") public List<Person> q2(String name, String address) {
        return personRepository.findByNameAndAddress(name, address);
    }
    @RequestMapping("/q3") public List<Person> q3(String name, String address) {
        return personRepository.withNameAndAddressQuery(name, address);
    }
    @RequestMapping("/sort") public List<Person> sort() {
        return personRepository.findAll(Sort.by(Sort.Direction.ASC, "age"));
    }
    @RequestMapping("/page") public Page<Person> page() {
        return personRepository.findAll(PageRequest.of(1, 2));
    }
}

四、數據源配置

在 src/main/resources/application.properties 中配置 MySQL 連接:

spring.datasource.url=jdbc:mysql://192.168.56.201:3306/bootsample?useUnicode=true&characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jackson.serialization.indent_output=true

五、接口測試驗證

啟動應用後,瀏覽器或 Postman 調用:

  • 保存數據:GET /save?name=aa&address=北京&age=1 等
  • 查詢:/q1?address=北京、/q2?address=北京&name=aa、/q3?address=北京&name=aa
  • 排序:/sort、分頁:/page

控制台將輸出 Hibernate 生成的 SQL,確認 JPA 正常工作。

六、總結

Spring Boot + Spring Data JPA 讓數據訪問層開發變得極其輕量,開發者只需關注實體定義與接口聲明,即可獲得豐富的查詢、分頁、排序能力,極大提升開發效率。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved