Spring+Doma+H2DBでWEBシステムを構築 その2
はじめに
前回同様ここを参考に作っていく。
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を作成
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の作成
- daoパッケージを作成
- 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の作成
- serviceパッケージを作成
- 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の作成
- controllerパッケージを作成
- 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ファイルの作成
- Daoインターフェイスの
selectAll
メソッドで右クリックしDoma
→Jump to Slq File
で作成
-
selectAll.sql
を追加
selectAll.sql
select
id
,name
from
TestEntity
order by
id asc
アプリケーションの作成
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;
}
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);
}
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();
}
}
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();
}
}
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を使おう
Author And Source
この問題について(Spring+Doma+H2DBでWEBシステムを構築 その2), 我々は、より多くの情報をここで見つけました https://qiita.com/tharao/items/fc9c74d5b6b5fc231253著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .