【Java / MyBatis入門】第2回:H2データベースでテーブル不要のSELECT!現在時刻や計算をサクッと取得してみよう
今回は、前回のプロジェクト(mybatis-minimal)をベースにして、H2データベースでテーブルを作成せずに SELECT CURRENT_TIMESTAMP(現在時刻の取得)や簡単な算術演算を行う、テーブル不要の SELECT クエリの実行手順を確認していこう。
事前準備
前回のハンズオンで作成したプロジェクトディレクトリに移動した状態からスタートする。
手順 1:ディレクトリおよびパッケージ階層の確認・作成
マッパー用のXMLファイルを配置するためのリソース用ディレクトリを作成する。
手順 2:マッパーインターフェースの作成
現在時刻と計算結果を取得するためのメソッドを定義したインターフェースを vi で作成する。
以下のコードを入力して保存する。
package com.example;
public interface TimeMapper {
String getCurrentTime();
int getCalculation();
}
手順 3:SQLマッピング XML の作成
テーブル名(FROM句)を必要としない SQL を記述する 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="com.example.TimeMapper">
<select id="getCurrentTime" resultType="string">
SELECT CURRENT_TIMESTAMP
</select>
<select id="getCalculation" resultType="int">
SELECT 100 + 200
</select>
</mapper>
手順 4:MyBatis 設定ファイルの更新
作成したマッパーXMLを MyBatis に認識させるため、設定ファイルに <mappers> タグを追加する。
以下の内容に書き換えて保存する。
<?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="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="org.h2.Driver"/>
<property name="url" value="jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1"/>
<property name="username" value="sa"/>
<property name="password" value=""/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/example/TimeMapper.xml"/>
</mappers>
</configuration>
手順 5:実行クラスの書き換え
新しく作成した TimeMapper を呼び出し、結果をコンソールに出力するコードに書き換える。
以下のコードに置き換えて保存する。
package com.example;
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 java.io.Reader;
public class App {
public static void main(String[] args) {
System.out.println("H2 & MyBatis テーブル不要のSELECTテストを開始します...");
try {
Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
try (SqlSession session = sqlSessionFactory.openSession()) {
TimeMapper mapper = session.getMapper(TimeMapper.class);
String currentTime = mapper.getCurrentTime();
System.out.println("-> 取得した現在時刻: " + currentTime);
int calcResult = mapper.getCalculation();
System.out.println("-> 計算結果 (100 + 200): " + calcResult);
}
System.out.println("-> 処理が正常に完了しました。");
} catch (Exception e) {
System.err.println("エラーが発生しました: " + e.getMessage());
e.printStackTrace();
}
}
}
手順 6:ビルドおよび実行
プロジェクト直下(mybatis-minimal/)で Maven コマンドを実行する。
実行結果の確認
正常に動作した場合、ターミナルに以下のような出力が表示されれば成功だ。
H2 & MyBatis テーブル不要のSELECTテストを開始します...
-> 取得した現在時刻: 2026-10-29 17:07:00.123456
-> 計算結果 (100 + 200): 300
-> 処理が正常に完了しました。
BUILD SUCCESS