SpringBoot DB
今回はSpringBootでDBにアクセスします。環境設定等はこちらを参照下さい。Java側の処理は、コンソールアプリをベースにするので先にそちらを参照下さい。
事前準備
アクセスするテーブルを作成します。DBがない場合、こちらを参考に構築して下さい。
CREATE TABLE m_user
(
id character varying(8) NOT NULL,
name character varying(16),
CONSTRAINT pk_m_user PRIMARY KEY (id)
)
プロジェクト作成
プロジェクト作成時にJDBC APIと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>demo3</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo3</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>11</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</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>
プロジェクト作成時に指定したのでspring-boot-starter-jdbc、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
UserModel.java
package spring.test;
public class UserModel {
String id;
String name;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
UserDao.java
package spring.test;
import java.util.List;
public interface UserDao {
public List<UserModel> getUserList(String id);
}
UserDaoImpl.java
package spring.test;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.stereotype.Repository;
@Repository
public class UserDaoImpl implements UserDao {
@Autowired
private JdbcTemplate jdbcTemplate;
@Override
public List<UserModel> getUserList(String id) {
List<UserModel> list = jdbcTemplate.query("select * from m_user where id= ?", new Object[] { id },
new int[] { java.sql.Types.VARCHAR }, new RowMapper<UserModel>() {
public UserModel mapRow(final ResultSet rs, final int rowNum) throws SQLException {
final UserModel user = new UserModel();
user.setId(rs.getString("id"));
user.setName(rs.getString("name"));
return user;
}
});
return list;
}
}
Demo.java
package spring.test;
import java.util.List;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;
@Component
public class Demo implements CommandLineRunner {
private UserDao userDao;
public Demo(UserDao dao) {
this.userDao = dao;
}
@Override
public void run(String... args) throws Exception {
List<UserModel> list = userDao.getUserList("0005");
System.out.println(list.size());
}
}
Demo3Application.java
package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
@ComponentScan("spring.test")
@SpringBootApplication
public class Demo3Application {
public static void main(String[] args) {
SpringApplication.run(Demo3Application.class, args);
}
}
@ComponentScanでSpringが管理するクラスを指定します。
実行
実行するとコンソールにテーブルのレコード数が出力されます。トランザクション
@Transactionalアノテーションをつけるとトランザクション処理が行えるようになります。使い方はこちらを参照ください。
SpringBootではtransactionManagerや<tx:annotation-driven />の設定を行う必要はありません。
SpringBootが自動でやってくれるので、@Transactionalアノテーションをつけるだけで使えます。
ページのトップへ戻る