18
18

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.

Groovyを使ったSpring Boot, Data JPA, MySQL操作の簡単な実装

Last updated at Posted at 2015-06-09

環境

OS X Yosemite 10.10.3
jdk1.8.0_45.jdk
MySQL Server version: 5.5.28 Source distribution

Spring Tool Suite

Version: 3.6.4.RELEASE
Build Id: 201503100337
Platform: Eclipse Kepler SR2 (4.3.2)

Gradle IDE plugin Version: 3.6.4.201503050952-RELEASE
Groovy-Eclipse plugin Version: 2.9.2.xx-201502282108-e43j8

前提条件

下の状態に実装を加えます

Spring Boot/Groovy/EclipseでHello world
http://qiita.com/quwahara/items/f4b1d30855fff83da3b8

Data JPAとMySQL Connectorの依存関係をbuild.gradleに設定する

前提条件のbuild.gradleに// Addを追記

build.gradle

// 省略

dependencies {
    // Add
    compile 'org.springframework.boot:spring-boot-starter-data-jpa'
    // Add
    compile 'mysql:mysql-connector-java'

    compile 'org.codehaus.groovy:groovy-all'
    compile 'org.springframework.boot:spring-boot-starter-web'

    // 省略
}

// 省略

Package ExplorerでProjectのRoot要素を右クリック、Gradle → Refresh All

Data Model(Domain)と操作(Repository)を追加

src/main/java/hello/domain/Memo.groovy
package hello.domain

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
class Memo {
    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    @Column(nullable = false, unique = true, updatable = false)
    Long id

    @Column(nullable = false)
    String text

    @Column(nullable = false)
    Date creationDate

}
src/main/java/hello/service/MemoRepository.groovy
package hello.service

import hello.domain.Memo

import org.springframework.data.repository.CrudRepository


interface MemoRepository extends CrudRepository<Memo, Long> {

}

Controllerを追加

src/main/java/hello/controller/MemoController.groovy
package hello.controller

import hello.domain.Memo
import hello.service.MemoRepository

import org.springframework.beans.factory.annotation.Autowired
import org.springframework.stereotype.Controller
import org.springframework.web.bind.annotation.PathVariable
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RequestParam
import org.springframework.web.bind.annotation.ResponseBody


@Controller
class MemoController {

    @Autowired
    private MemoRepository memoRepository

    @RequestMapping("/memo/new")
    @ResponseBody
    Memo new_(@RequestParam(required=false) String text) {
        Memo memo = new Memo(text:text?:"", creationDate:new Date())
        return memoRepository.save(memo)
    }

    @RequestMapping("/memo/find-all")
    @ResponseBody
    List<Memo> findAll() {
        return memoRepository.findAll()
    }

    @RequestMapping("/memo/find/{id}")
    @ResponseBody
    List<Memo> find(@PathVariable Long id) {
        Memo memo = memoRepository.findOne(id)
        return (memo?[memo]:[]) as Memo[]
    }
}

Component Scanを指定

src/main/java/hello/SampleController.groovy
package hello;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
// Add
import org.springframework.context.annotation.ComponentScan;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
// Add
@ComponentScan
@EnableAutoConfiguration
public class SampleController {
    // 省略
}

application.propertiesにDatabase接続設定を追加

src/main/resources/application.properties
# DATASOURCE (DataSourceAutoConfiguration & DataSourceProperties)
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost/gpdb?characterEncoding=UTF-8
spring.datasource.username=user
spring.datasource.password=password

# JPA (JpaBaseConfiguration, HibernateJpaAutoConfiguration)
spring.jpa.show-sql=false
spring.jpa.database-platform=org.hibernate.dialect.MySQLDialect
spring.jpa.database=MYSQL
# validate | update | create | create-drop
spring.jpa.hibernate.ddl-auto=create-drop

アプリケーションを実行

Package Explorerでhello/SampleController.groovyを選択、右クリック
Debug As → Spring Boot App

ブラウザで下のURLを開く
http://localhost:8080/memo/new
http://localhost:8080/memo/find-all
http://localhost:8080/memo/find/1

参考

次の記事

Thyemeleafの簡単な実装
http://qiita.com/quwahara/items/a5e8b4c5d1b039b99730

18
18
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
18
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?