LoginSignup
25
31

More than 5 years have passed since last update.

SpringBoot + MyBatis(SQLite)なプロジェクトを30分で作成するハンズオン

Last updated at Posted at 2016-05-27

勉強会用の資料です。
対面でやるため、資料は非常に雑です。

プロジェクトを作る

[New Project] -> [Gradle]
あと適当に。
newproject_gradle.png

SpringBootを使ってWebサーバを作る

build.gradle にspringbootを追加する

build.gradle

apply plugin: 'java'

sourceCompatibility = 1.8
version = '1.0'

repositories {
    mavenCentral()
}

dependencies {
    compile("org.springframework.boot:spring-boot-starter-web:1.3.5.RELEASE")// 追加
    testCompile group: 'junit', name: 'junit', version: '4.11'
}

コントローラを作る

SampleController.java

@Controller
@EnableAutoConfiguration
public class SampleController {
    @RequestMapping("/")
    @ResponseBody
    String home() {
        return "Hello";
    }

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

動作確認

  • 実行
    • クラスを選択して右クリック
    • [Run 'Sample...main()']をクリック

run.png

MybatisでSQLiteにアクセスする

build.gradle にmybatisとsqliteを追加する

dependenciesに2行追加する
build.gradle

dependencies {
    compile("org.springframework.boot:spring-boot-starter-web:1.3.5.RELEASE")

    compile group: 'org.mybatis', name: 'mybatis', version: '3.0.1'// 追加
    compile group: 'org.xerial', name: 'sqlite-jdbc', version: '3.8.11.2'// 追加

    testCompile group: 'junit', name: 'junit', version: '4.11'
}

ターミナルでdbを作る

% sqlite3 hoge.db
SQLite version 3.8.5 2014-08-15 22:37:57
Enter ".help" for usage hints.
sqlite> create table test_table(name);
sqlite> insert into test_table values('apple');
sqlite> insert into test_table values('banana');

※プロジェクト直下でやってね。

mybatisの設定ファイルを作る

リソースディレクトリにmybatis-config.xmlを作る
src/main/resources/mybatis-config.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <environments default="sample_id">
        <environment id="sample_id">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="org.sqlite.JDBC"/><!-- sqliteのドライバーを設定 -->
                <property name="url" value="jdbc:sqlite:hoge.db"/><!-- dbのファイルパス -->
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="sample_mapper.xml"/>
    </mappers>
</configuration>

マッパーを作る

リソースディレクトリにsample_mapper.xmlを作る
src/main/resources/sample_mapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="sample.mybatis">
    <select id="selectTest" resultType="map">
        select * from test_table
    </select>
</mapper>

コントローラーから呼び出す

SampleController.java

@Controller
@EnableAutoConfiguration
public class SampleController {
    @RequestMapping("/")
    @ResponseBody
    List<Map<String, Object>> home() {
        String resource = "mybatis-config.xml";
        try (Reader in = Resources.getResourceAsReader(resource)) {
            // ★設定ファイルを元に、 SqlSessionFactory を作成する
            SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);

            // ★SqlSessionFactory から SqlSession を生成する
            SqlSession session = factory.openSession();
            // ★SqlSession を使って SQL を実行する
            List<Map<String, Object>> result = session.selectList("sample.mybatis.selectTest");
            return result;
        } catch (IOException e) {
            // nop
        }

        return null;
    }

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

動作確認

[{"name":"apple","NAME":"apple"},{"name":"banana","NAME":"banana"}]

おつかれさまでした

補足: はまりポイント

importできない

原因: build.gradleを更新後、intellijのRefreshをしてない。
-> intellijでgradleをリフレッシュする
[View] - [Tool Windows] - [Gradle]を表示して、左上のリロードっぽいボタンを押す

なんにもしてないのにサーバが立ち上がらなくなった

原因: 前回実行したアプリを落としてない
-> [Run] - [Stop]

SampleController.javaはどこにおけばイイ?

src/main/java配下

SampleController.javaでimportすべきパッケージがわからん

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.io.IOException;
import java.io.Reader;
import java.util.List;
import java.util.Map;
25
31
1

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
25
31