🌊

VScodeでSpringBoot + MyBatisプロジェクトを作成する

2021/01/24に公開
1

はじめに

Visual Studio Codeで「SpringBoot + MyBatis」でプロジェクトを作成します。
本記事ではSpringBoot + MyBatisでDBアクセスまで行うことを目標としています。
また、今回使用するDBは「SQLite3」です。

作業環境

  • macOS Catalina バージョン 10.15.5
  • OpenJDK 11.0.9.1
  • Visual Studio Code

SpringBootプロジェクトを作成する。

その1: コマンドパレットを起動し、「Spring Initializr: Create a Maven Project」を選択します。
今回はMavenプロジェクトで作成したいので、Create a Maven Projectの方を選択します。
Spring Initializr

その2: SpringBootのバージョンを選択します。
今回は2.4.2を選択します。
バージョン

その3: 使用言語を選択します。
Javaを選択します。
言語

その4: プロジェクト名を入力します。
特に変更しない場合は何も入力せずにEnterキーを押しましょう。
プロジェクト

その5: パッケージ名を入力します。
こちらも特に変更がない場合は何も入力せずにEnterキーを押しましょう。
パッケージ

その6: パッケージングタイプを選択します。
今回はどちらを選んでも目標を達成できるので、JARを選択します。
パッケージングタイプ

その7: Javaのバージョンを選択します。
今回使用してるのはOpenJDK11のため、11を選択します。
バージョン

その8: 依存関係を追加します。
下記の画像のものをいったん追加しています。
※ここで入れ忘れた物は後でも追加できます。
依存関係

プロジェクトが表示され、右下に画像のようなポップアップが出現するので、「Now」を押します。
(依存関係を追加するたびに出現するのが面倒という人は「Always」を選択しましょう。)
ポップアップ
※初回は時間がかかるかもしれませんが気長に待ちます。
パッケージのダウンロードが完了したところで、いったん起動してみます。

DemoApplication.javaを開き、mainメソッドの上にあるRunをクリックします。
起動すれば成功です。
起動

DBを追加

DBはSQLite3を使用したいので、使用するための準備を行います。
その1: mavenに依存関係を追加します。
pom.xmlに以下の依存関係を追加します。

        <dependency>
			<groupId>org.xerial</groupId>
			<artifactId>sqlite-jdbc</artifactId>
			<version>3.34.0</version>
		</dependency>

保存をし右下に出現するポップアップで「Now」をクリックします。
(初回に「Always」を押した人は出現しません。)

その2: DBを作成し、データを投入します。
今回は「demo」配下に「db」フォルダを作成し、そこに「database.sqlite3」という名前でDBを作成します。
ターミナルを起動し、DBを作成したディレクトリに移動し、SQLite3を起動しデータを投入します。

sqlite3 database.sqlite3
SQLite version 3.28.0 2019-04-15 14:49:49Enter ".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の準備

その1: demo/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:demo/db/database.sqlite3"/><!-- dbのファイルパス -->
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="sample_mapper.xml"/>
    </mappers>
</configuration>

その2: SQLを記載するためのxmlファイルを作成します。
demo/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>

実際に表示してみる

その1: Controllerを作成します。
今回はControllerクラスからデータアクセスをするので、必要な情報を書いていきます。
demo直下にcontrollerディレクトリを追加し、SampleController.javaを作成します。

package com.example.demo.controller;

import java.io.IOException;
import java.io.Reader;
import java.util.List;
import java.util.Map;

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.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class SampleController {

    @RequestMapping("/")
    public String index(Model model) {
        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");
            // modelに追加
            model.addAttribute("results", result);
        } catch (IOException e) {
            // nop
        }

        return "index";
    }
}

その2:画面表示するためのテンプレートを作成します。
今回はthymeleafを使用して、demo/resources/templatesにindex.htmlを作成します。
とりあえずDBで取得した内容を表示できれば良いので、中身はかなり適当に書きました。

<!DOCTYPE html>
<html lang="ja" xmlns:th="http://wwww.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <p>
        <span th:text="${results}">test</span>
    </p>
</body>
</html>

プロジェクトを起動しhttp://localhost:8080/
でDBに登録した内容が表示されれば成功です。

最終的なディレクトリ構成は下記の通りです。
構成

最後に・・・

以上、SpringBoot + MyBatisでDBアクセスするところまで作成できました。
今まではjavaの開発はeclipseやIntelliJがほとんどでしたが、Visual Studio Codeでも簡単に作成できることに気付けたのは大きな収穫でした。

Discussion

HikaruooHikaruoo

突然のコメント失礼します。「VS Code」での「Spring Boot + MyBatis」プロジェクト作成について、丁寧にガイドしているので、初心者でも実際にプロジェクトをセットアップできるようになっています!SQLite3を選択している点も、軽量なDBを使って素早くプロトタイピングを行う人にとって便利だと思います。

このガイドを参考に作業することで、VS Code上でのJava開発の効率性に気づけそうです。ちなみに、APIのテストを頻繁に行う場合、「ECHOAPI」というVS Code拡張も検討すると良いですよ。APIリクエストの作成・管理がスムーズにでき、開発・デバッグがさらに便利になるので試してみる価値があると思います。