LoginSignup
4
2

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