メモ
概要
- SpringBootでPostgreSQLを使えるようにする
- 簡単なアプリを作る ※どういう仕組みで動いてるかの詳しい説明は省きます
環境
- SpringToolSuite 3.8.4 (以下、STS)
- SpringBoot 1.5.3.RELEASE
- PostgreSQL v9.3
前提
- SpringToolSuiteが導入済み
- PostgreSQLが導入済み(今回はホストOSに導入したものを使用)
手順
- DBの設定
- プロジェクト作成
- プロジェクト設定
- モデル・コントローラ・リポジトリ・サービスの作成
- 実行
準備
プロジェクトを作る前にあらかじめDBを作っておきます
PostgreSQL
CREATE DATABASE testdb;
(データベース切り替えを忘れずに)
CREATE TABLE person (
id SERIAL PRIMARY KEY
, name VARCHAR(16)
, age INT);
INSERT INTO person VALUES
(1,'taro',19)
, (2,'tadokoro',24)
, (3,'hanako',14);
導入
新しいプロジェクトの作成
Spring Initializr を使ってプロジェクトを作成
Generate Project
ボタンを押すとプロジェクトフォルダがダウンロードされる。
その後、解凍して好きな場所に置いておく
プロジェクトのインポート
STSのタブの File -> Open Projects From FileSystems..
から[Directory]
ボタンを選択し、先ほど解凍したプロジェクトフォルダを選択する
Import as がMavenになっていることを確認し、[Finish]を選択
※Import asがEclipseの場合はもう一度解凍し直すか、解凍方法を変えてプロジェクトを選択
環境設定
pom.xmlの書き換え
Spring IO platformにアクセス
QuickStartにある設定の記述をコピーして自分のpom.xmlに追加
/bootpostgres/pom.xml
~~~
</properties>
<!-- ここから -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>io.spring.platform</groupId>
<artifactId>platform-bom</artifactId>
<version>Brussels-SR2</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<!-- ここまで -->
<dependencies>
<!-- ついでに下記も追加 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
</dependency>
<!-- 追加ここまで -->
~~~
PostgreSQLへの接続情報を追記する
/src/main/resources/application.properties
spring.datasource.driver-class-name=org.postgresql.Driver
spring.datasource.url=jdbc:postgresql://localhost:5432/testdb
spring.datasource.username=postgres
spring.datasource.password=hogehoge
環境設定は以上で終わり
モデルの作成
src/main/java/com.takahashi.Person.java/
@Entity
@Table(name = "person")
public class Person {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int id;
@Column(name="name")
private String name;
@Column(name="age")
private int age;
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 int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
リポジトリの作成
/src/main/resources/com.takahashi.PersonRepository.java
@Repository
public interface PersonRepository extends JpaRepository<Person,Integer>{
}
サービスの作成
/src/main/resources/com.takahashi.PersonService.java
@Service
@Transactional
public class PersonService {
@Autowired
PersonRepository repository;
public List<Person> findAll(){
return repository.findAll(new Sort(Sort.Direction.ASC,"id"));
}
}
コントローラーの作成
/src/main/resources/com.takahashi.PersonController.java
@RestController
@RequestMapping("/person")
public class PersonController {
@Autowired
PersonService service;
@RequestMapping(value="/",method=RequestMethod.GET)
public List<Person> index(){
return service.findAll();
}
}
実行する
プロジェクトを選択して右クリック
Run as -> Spring Boot App
上記のように表示されていればOK
参考サイト
https://www.slideshare.net/shintanimoto/spring-boot10
http://dev.classmethod.jp/server-side/java/using_spring_boot_2/