【SpringBoot入門】Spring Boot + PostgreSQLの設定・DB検索

投稿者: | 2018年4月15日

この週末にSpringBootの入門書を1冊写経しながら勉強しました。入門書の中ではDBアクセスがHSQLDBのみの例しかなかったので、Webサイトなどを参考にしつつ、PosgresSQLとの接続を試してみました。備忘も兼ねて記載しておきます。

※初心者なので表現に誤りがあるかもです

概要

  • DBにPostgresSQLを利用したSpringBootの簡単なプログラムを作成
  • DBから情報取得しWeb画面に表示するとことまでを目指す

PostgresSQLの準備

テーブル作成

CREATE TABLE client (
id SERIAL PRIMARY KEY,
name text,
mail text, 
memo text
);

データ登録

insert into client values(1,'山田 太郎','yamada@yama.com','大口のお取引先');
insert into client values(2,'鈴木 花子','suzuki@hanako.com','とても美人');
insert into client values(3,'田中 大輔','tanaka@daisuke.com','若くて優秀');
insert into client values(4,'伊藤 カイジ','kaizi@ito.com','負債者。お金がない。');
insert into client values(5,'大槻 ハンチョウ','hancho@kuzu.com','地下の班長');

Spring Boot側の設定

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>PosgreSampleApp</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>PosgreSampleApp</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.1.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>

src/main/resources/application.properties

postgresの接続情報を追記する。

spring.datasource.driver-class-name=org.postgresql.Driver
spring.datasource.url=jdbc:postgresql://localhost:5432/sample1
spring.datasource.username=postgres
spring.datasource.password=postgres

SpringBootのプログラム開発

エンティティクラスの作成

Client.java

package com.example.demo;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name="client")
public class Client {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column
private int id;
@Column
private String name;
@Column
private String mail;
@Column
private String memo;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getMail() {
return mail;
}
public void setMail(String mail) {
this.mail = mail;
}
public String getMemo() {
return memo;
}
public void setMemo(String memo) {
this.memo = memo;
}
}

リポジトリの作成

package com.example.demo.repositories;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import com.example.demo.Client;
;
@Repository
public interface ClientRepository extends JpaRepository<Client, Integer>{
}

 コントローラーの作成

データを全件表示し、追加もできるようなものを作ってみます。

package com.example.demo;
import javax.transaction.Transactional;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
import com.example.demo.repositories.ClientRepository;
@Controller
public class PosgresSampleController {
@Autowired
ClientRepository repository;
@RequestMapping(value="/",method=RequestMethod.GET)
public ModelAndView index(
@ModelAttribute("formModel") Client tmp ,
ModelAndView mav) {
mav.setViewName("index");
Iterable<Client> list = repository.findAll();
mav.addObject("list",list);
return mav;
}
@RequestMapping(value="/",method=RequestMethod.POST)
@Transactional
public ModelAndView form(
@ModelAttribute("formModel") Client tmp ,
ModelAndView mav) {
repository.saveAndFlush(tmp);
return new ModelAndView("redirect:/");
}
}

 ビューの作成

Thymleafを使ってます。

package com.example.demo;
import javax.transaction.Transactional;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
import com.example.demo.repositories.ClientRepository;
@Controller
public class PosgresSampleController {
@Autowired
ClientRepository repository;
@RequestMapping(value="/",method=RequestMethod.GET)
public ModelAndView index(
@ModelAttribute("formModel") Client tmp ,
ModelAndView mav) {
mav.setViewName("index");
Iterable<Client> list = repository.findAll();
mav.addObject("list",list);
return mav;
}
@RequestMapping(value="/",method=RequestMethod.POST)
@Transactional
public ModelAndView form(
@ModelAttribute("formModel") Client tmp ,
ModelAndView mav) {
repository.saveAndFlush(tmp);
return new ModelAndView("redirect:/");
}
}

【SpringBoot入門】Spring Boot + PostgreSQLの設定・DB検索」への1件のフィードバック

  1. ピンバック: 【SpringBoot入門】Spring Boot+JPAで複数テーブル結合処理 – カツオ !

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です