SpringBoot MyBatis① 単純なSELECT
今回はSpringBootでMyBatisを使ってみます。環境設定等はこちらを参照下さい。Java側の処理は、コンソールアプリをベースにするので先にそちらを参照下さい。
事前準備
アクセスするテーブルを作成します。DBがない場合、こちらを参考に構築して下さい。
CREATE TABLE m_user
(
id character varying(8) NOT NULL,
name character varying(16),
CONSTRAINT pk_m_user PRIMARY KEY (id)
)
プロジェクト作成
プロジェクト作成時にMyBatisとPostgreSQL Driverを指定します。別のDBで行う場合、postgresqlをDBにあったものに変更してください。
設定ファイル
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.2</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>demo2</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo2</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>11</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.0</version>
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
プロジェクト作成時に指定したのでmybatis-spring-boot-starter、postgresqlが入っています。
application.properties
spring.datasource.driver-class-name=org.postgresql.Driver
spring.datasource.url=jdbc:postgresql://localhost:5432/postgres
spring.datasource.username=postgres
spring.datasource.password=ps
DBの接続情報を設定しています。
Java
UserDao.java
package spring.test;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.annotations.Select;
public interface UserDao {
@Select("select id,name from m_user")
public List<Map<String, Object>> getUserList();
}
SQLを実行し結果を返します。インターフェースに対応する実現クラスは作成する必要ありません。
Demo.java
package spring.test;
import java.util.List;
import java.util.Map;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;
@Component
public class Demo implements CommandLineRunner {
UserDao userDao;
public Demo(UserDao dao) {
userDao = dao;
}
@Override
public void run(String... args) throws Exception {
List<Map<String, Object>> list = userDao.getUserList();
for (Map<String, Object> map : list) {
for (String key : map.keySet()) {
System.out.print("\t" + key);
}
System.out.println("");
for (String key : map.keySet()) {
System.out.print("\t" + map.get(key));
}
System.out.println("");
}
}
}
Demo2Application.java
package com.example.demo;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
@MapperScan("spring.test")
@ComponentScan("spring.test")
@SpringBootApplication
public class Demo2Application {
public static void main(String[] args) {
SpringApplication.run(Demo2Application.class, args);
}
}
@ComponentScanでSpringが管理するクラスを指定します。
@MapperScanでMyBatisが管理するクラスを指定します。
実行
実行するとコンソールにテーブルのテーブルの内容が出力されます。ページのトップへ戻る