4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Spring+Doma+H2DBでWEBシステムを構築 その2

Last updated at Posted at 2017-12-13

#はじめに
前回同様ここを参考に作っていく。

#Spring Tool Suite(STS)およびDoma Toolsの導入
開発する上で便利なので導入しておく
##STSの導入

  1. ヘルプEclipseマーケットプレイスにてSTSを検索し、インストールする
  2. インストールが完了後Eclipseを再起動

##Doma Toolsの導入

  1. ヘルプ新規ソフトウェアのインストール作業対象http://dl.bintray.com/domaframework/eclipse/を入力
  2. Doma Toolsにチェックを入れ次へ
  3. インストール完了後、Eclipseを再起動

#簡単なSelectとInsert処理を作成
##Entityの作成

  1. entityパッケージを作成
  2. entityパッケージの中にTestEntityを作成
TestEntity.java
package com.tharao.createdesigndocuments.entity;

import org.seasar.doma.Entity;
import org.seasar.doma.GeneratedValue;
import org.seasar.doma.GenerationType;
import org.seasar.doma.Id;

@Entity
public class TestEntity {

	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	public Integer id;
	public String name;

}

##Daoの作成

  1. daoパッケージを作成
  2. daoパッケージの中にTestEntityDaoを作成
TestEntityDao.java
package com.tharao.createdesigndocuments.dao;

import java.util.List;

import org.seasar.doma.Dao;
import org.seasar.doma.Insert;
import org.seasar.doma.Select;
import org.seasar.doma.boot.ConfigAutowireable;
import org.springframework.transaction.annotation.Transactional;

import com.tharao.createdesigndocuments.entity.TestEntity;

@ConfigAutowireable
@Dao
public interface TestEntityDao {

	@Select
	List<TestEntity> selectAll();
	
	@Insert
	@Transactional
	int insert(TestEntity reservation);

}

##Serviceの作成

  1. serviceパッケージを作成
  2. serviceパッケージの中にTestServiceを作成
TestService.java
package com.tharao.createdesigndocuments.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.tharao.createdesigndocuments.dao.TestEntityDao;
import com.tharao.createdesigndocuments.entity.TestEntity;

@Service
@Transactional
public class TestService {

	@Autowired
	TestEntityDao dao;

	public List<TestEntity> getAllEntities() {
		return dao.selectAll();
	}

}

##Controllerの作成

  1. controllerパッケージを作成
  2. controlleパッケージの中にTestControllerを作成
TestService.java
package com.tharao.createdesigndocuments.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import com.tharao.createdesigndocuments.entity.TestEntity;
import com.tharao.createdesigndocuments.service.TestService;

@RestController
public class TestController {

	@Autowired
	TestService service;

	@RequestMapping(value = "test", method = RequestMethod.GET)
	public List<TestEntity> getEntities() {
		return service.getAllEntities();
	}

}

##SQLファイルの作成

  1. DaoインターフェイスのselectAllメソッドで右クリックしDomaJump to Slq Fileで作成
  2. selectAll.sqlを追加
selectAll.sql
select
	id
	,name
from
	TestEntity
order by
	id asc

##アプリケーションの作成
初期データを入れる

CreateDesignDocumentsApplication.java
package com.tharao.createdesigndocuments;

import java.util.Arrays;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;

import com.tharao.createdesigndocuments.dao.TestEntityDao;
import com.tharao.createdesigndocuments.entity.TestEntity;

@SpringBootApplication
public class CreateDesignDocumentsApplication {

	public static void main(String[] args) {
		SpringApplication.run(CreateDesignDocumentsApplication.class, args);
	}

	@Autowired
	TestEntityDao testEntityDao;

	// 起動時にReservationDao#insertで初期データを投入する
	@Bean
	CommandLineRunner runner() {
		return args -> Arrays.asList("spring", "spring boot", "doma").forEach(s -> {
			TestEntity r = new TestEntity();
			r.name = s;
			testEntityDao.insert(r);
		});
	}

}

次にapplication.propertiesにSQLの方言を設定する

application.properties
doma.dialect=h2

##apt(注釈処理)の設定
###Doma公式のセットアップにならい、aptの設定をする。

  1. Eclipseのプロジェクトのプロパティを表示し、Javaコンパイラー注釈処理を選択する

  2. プロジェクト固有の設定を可能にするにチェックを入れる

  3. 生成されるソース・ディレクトリー.apt_generatedにする

  4. プロセッサー・オプションに以下を追加

    キー
    dao.subpackage impl
  5. Javaコンパイラー注釈処理ファクトリー・パスを選択する

  6. プロジェクト固有の設定を可能にするにチェックを入れる

  7. 注釈プロセッサーを含むプラグイン及びJARdomaのjarを追加しOKを押す

#動かしてみる
http://localhost:8080/testにアクセスすると、無事データがJSON形式で表示された。
test.png

#ハマったところ
SQLファイルをsrc/main/resourcesの下に作成したが、プロジェクトのJavaのビルド・パスでsrc/main/resources除外の設定に全ファイルが設定されており、DaoImplが作成されなかった。
src/main/resources除外をなしに設定したところ、無事にDaoImplが作成されコンパイルが通った。

参考にしたURL
Spring Boot + Doma2を使おう

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?