訪問數據庫是代碼開發中最常見的任務之一,springboot搭配上spring data項目,在讀寫數據庫的場景上非常簡單方便好用,寫起讀寫數據庫代碼來輕松愉快。
本次實現的功能
本次我們實現一個非常簡單的數據寫入、查詢的功能。假設我們在開發一個股票交易系統中的一個小模塊,這個模塊負責上市公司的錄入和查詢。 需要提供的功能是能夠寫入上市公司名稱和對應的代碼,能夠根據代碼查詢上市公司的名稱。
創建數據庫、建表
如果在本地搭建數據庫,可以用docker快速啟動一個mysql數據庫,然后用IDEA自帶的database連接功能,創建表查看數據,非常方便。
# my-secret-pw修改成自己要設置的數據庫的root用戶密碼,這個命令默認安裝最新版本的mysql(現在是8版本,如果用sequelpro連接可能報錯,可以google搜索對應解決方案)
docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql
我們建立一個名為stock的數據庫和數據表,數據庫表結構非常簡單,一個自增id,一個code表示代碼一個name表示名稱。
create database stock;
use stock;
create table stock
(
id bigint auto_increment
primary key,
code varchar(120) null,
name varchar(120) null,
constraint stock_code_uindex
unique (code)
);
引入spring data jpa
要在springboot中使用spring data jps訪問mysql數據庫,我們需要在項目中增加pom依賴和配置。
修改pom.xml,加入mysql-connector-java
因為我們使用的是mysql數據庫,加入spring-boot-starter-data-jpa
是springboot的spring data jpa依賴。
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
修改application.properties或application.yml,以下以application.properties為例。注意下面的password和url按照自己的情況進行修改。
spring.datasource.username=root
spring.datasource.password=123
spring.datasource.url=jdbc:mysql://localhost:3306/stock
創建數據庫對象模型Entity類
我們定義和數據庫表中數據映射的Entity類,也就是我們的模型類,一般情況下和數據庫里的表結構字段一一映射即可。
下面我使用了lombok省去寫getsetter的操作,Entity類需要加上@Entity注解,并且需要一個@Id注解加在id字段上,id字段上還有一個@GeneratedValue表示這個id是怎么生成的,這個字段自增則使用strategy = GenerationType.IDENTITY
import lombok.Data;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity
@Data
public class Stock {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String code;
private String name;
}
定義Repository接口
下面要定義我們的DAO類了,在spring data里叫做Repository,我們定義一個StockRepository,繼承于JpaRepository,這個接口提供了增刪改查等常用的操作。 接口中還定義了兩個泛型,前面泛型的是Repository操作的Entity類,后面的泛型是Entity類的id的類型,我們這里分別是Stock和Long。 Repository接口中還可以增加findXXXByXXX這樣的方法,能夠實現條件查詢。我們這里增加一個findStockByCode的方法
public interface StockRepository extends JpaRepository<Stock, Long> {
Stock findStockByCode(String code);
}
使用Repository
定義好StockRepository類后就可以在其他的bean里引用這個Repository使用了。
@Autowired
private StockRepository stockRepository;
@RequestMapping("/saveAndGet")
public Stock saveAndGet(Stock stock) {
stockRepository.save(stock);
return stock;
}
@RequestMapping("/getByCode")
public Stock getByCode(String code) {
return stockRepository.findStockByCode(code);
}
總結
可以看到使用spring boot data jpa操作數據庫非常簡單方便快捷,不用做很多配置,操作數據庫也不用寫sql和手動映射代碼。關于spring data jpa的使用和實現我會在后面單獨寫一個系列,歡迎大家關注點贊收藏轉發。
本文使用 文章同步助手 同步