【Spring Boot】PostgreSQLに接続してデータを取得する

Java

今回の記事ではSpring Bootを使ってPostgreSQLに接続する方法について解説していきます。

手順としては主に次の3つの手順で実施することができます。

  1. PostgreSQLでDBとテーブルを作成する
  2. Spring Bootのapplication.propertiesを編集する
  3. pom.xmlに依存関係の追加をする

設定が完了した後は実際にコードを書いて、PostgreSQLのデータを取得して、画面に表示してみましょう!

PostgreSQLでデータベース・テーブルの作成

まず最初にPostgreSQLでデータベースとテーブルの作成を行います。

データベースの作成

次のコマンドをターミナル等で実行して、データベースを作成します。

createdb SpringTestDB -O username

テーブルの作成

データベースの作成が完了したら、テーブルを作成します。

次のコマンドで、作成したデータベースに接続します。

psql -U username SpringTestDB

次のコマンドでテーブルを作成します。

create table booksinfo(id serial, title varchar(50), price int);

今回はbooksinfoというテーブルを作成しました。
このテーブルは次のようなカラムを持ちます。

  • 自動で番号が付けられるid
  • 本のタイトル
  • 本の値段

このbooksinfoにデータをいくつか登録しておきます。

insert into booksinfo(title,price) values ('渋谷ではたらく社長の告白', 800),('起業家', 800), ('藤田晋の成長論', 1540);

select文を実行して、データが登録されているか確認します。

select * from booksinfo;

次のようにデータが登録されていたらPostgreSQLでのDBとテーブルの作成は完了です。

idtitleprice
1渋谷ではたらく社長の告白800
2起業家800
3藤田晋の成長論1540

Spring Bootの設定を変更

次にSpring BootでPostgreSQLに接続するための設定を行なっていきます。

Eclipseを使って、Spring Bootの環境構築する方法はこちらの記事を参考にしてみてください。
Eclipseを使ってSpring Bootの環境を構築する方法

application.propertiesの変更

まずapplication.propertiesにDBに接続するための記述を行います。
usernameやパスワードは環境に応じて変更してください。

spring.jpa.database=POSTGRESQL
spring.datasource.url=jdbc:postgresql://localhost:5432/SpringTestDB
spring.datasource.username=username
spring.datasource.password=password

pom.xmlに依存関係の追加

pom.xmlの<dependencies>と</dependencies>の間に次のような記述を追加します。

<dependency>
  	<groupId>org.springframework.boot</groupId>
  	<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
	<groupId>org.postgresql</groupId>
	<artifactId>postgresql</artifactId>
	<scope>runtime</scope>
</dependency>

PostgreSQLのデータを表示するプログラム

では実際にプログラムを書いて、PostgreSQLからデータを取得してみましょう。

modelの作成

Book.java

package com.uhablog.model;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

import lombok.Data;

@Data
@Entity
@Table(name = "booksinfo")
public class Book {

	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	@Column(name="id")
	// 本のidを保持するフィールド
	private Integer id;
	
	@Column(name="title")
	// 本のタイトルを保持するフィールド
	private String title;
	
	
	@Column(name="price")
	// 本の値段を保持するフィールド
	private Integer price;
}

repositoryの作成

BookRepository.java

package com.uhablog.repository;

import org.springframework.data.jpa.repository.JpaRepository;

import com.uhablog.model.Book;

public interface BookRepository extends JpaRepository<Book, Integer> {

}

serviceの作成

BookService.java

package com.uhablog.service;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.uhablog.model.Book;
import com.uhablog.repository.BookRepository;

@Service
@Transactional
public class BookService {
	
	@Autowired
	BookRepository repository;
	
	/**
	 * データベースから本の一覧を取得する
	 * @return
	 */
	public List<Book> findAll() {
		return repository.findAll();
	}
}

contorollerの作成

BookController.java

package com.uhablog.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;

import com.uhablog.model.Book;
import com.uhablog.service.BookService;

@Controller
public class BookController {
	
	@Autowired
	BookService service;
	
	@GetMapping("/book-list")
	public String bookList(Model model) {
		
		// serviceを使って、本の一覧をDBから取得する
		List<Book> bookList = service.findAll();
		// modelに本の一覧を設定して、画面に渡す
		model.addAttribute("bookList", bookList);
		// bookList.htmlの表示
		return "bookList";
	}

}

bookList.htmlの作成

bookList.html

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>本の一覧表示</title>
</head>
<body>
	<table>
		<tr th:each="book : ${bookList}" th:object="${book}">
			<td th:text="*{id}"></td>
			<td th:text="*{title}"></td>
			<td th:text="*{price}"></td>
		</tr>
	</table>
</body>
</html>

アプリを起動して「http://localhost:8080/book-list」にアクセスします。

テーブルからデータを取得できていることがわかります!

今回はSpring BootでPostgreSQLに接続して、データを取得する方法について解説してきました。
このようにこのサイトではプログラミング初心者や未経験の学生や社会人の方に向けて、JavaでWebアプリを開発する方法を発信しています。

プログラミングを勉強して、エンジニアになりたい!」という方はぜひこのサイトを参考に、エンジニアを目指してください!
プログラミング未経験からエンジニアになるまでのロードマップ

就職活動や、転職活動をする際はエージェントの活用がオススメです!
新卒でエンジニアを目指す方にオススメのエージェント、レバテックルーキーはこちら
未経験からエンジニアを目指す方にオススメのウズキャリITはこちら

タイトルとURLをコピーしました