#はじめに
前回同様ここを参考に作っていく。
#Spring Tool Suite(STS)およびDoma Toolsの導入
開発する上で便利なので導入しておく
##STSの導入
-
ヘルプ
→Eclipseマーケットプレイス
にてSTS
を検索し、インストールする - インストールが完了後Eclipseを再起動
##Doma Toolsの導入
-
ヘルプ
→新規ソフトウェアのインストール
で作業対象
にhttp://dl.bintray.com/domaframework/eclipse/を入力 -
Doma Tools
にチェックを入れ次へ
- インストール完了後、Eclipseを再起動
#簡単なSelectとInsert処理を作成
##Entityの作成
- entityパッケージを作成
- entityパッケージの中にTestEntityを作成
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の作成
- daoパッケージを作成
- daoパッケージの中にTestEntityDaoを作成
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の作成
- serviceパッケージを作成
- serviceパッケージの中にTestServiceを作成
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の作成
- controllerパッケージを作成
- controlleパッケージの中にTestControllerを作成
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ファイルの作成
- Daoインターフェイスの
selectAll
メソッドで右クリックしDoma
→Jump to Slq File
で作成 -
selectAll.sql
を追加
select
id
,name
from
TestEntity
order by
id asc
##アプリケーションの作成
初期データを入れる
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の方言を設定する
doma.dialect=h2
##apt(注釈処理)の設定
###Doma公式のセットアップにならい、aptの設定をする。
-
Eclipseのプロジェクトのプロパティを表示し、
Javaコンパイラー
→注釈処理
を選択する -
プロジェクト固有の設定を可能にする
にチェックを入れる -
生成されるソース・ディレクトリー
を.apt_generated
にする -
プロセッサー・オプション
に以下を追加キー 値 dao.subpackage impl -
Javaコンパイラー
→注釈処理
→ファクトリー・パス
を選択する -
プロジェクト固有の設定を可能にする
にチェックを入れる -
注釈プロセッサーを含むプラグイン及びJAR
にdoma
のjarを追加しOK
を押す
#動かしてみる
http://localhost:8080/testにアクセスすると、無事データがJSON形式で表示された。
#ハマったところ
SQLファイルをsrc/main/resources
の下に作成したが、プロジェクトのJavaのビルド・パスでsrc/main/resources
の除外
の設定に全ファイルが設定されており、DaoImplが作成されなかった。
src/main/resources
の除外
をなしに設定したところ、無事にDaoImplが作成されコンパイルが通った。
参考にしたURL
Spring Boot + Doma2を使おう