16
22

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Spring Boot+MyBatis+PostgreSQLでデータ取得まで

Last updated at Posted at 2019-04-07

ちょっと前はそんなに悩まなかったけど、
最近やったら意外と手こずったので、自分用メモに。

#準備

  1. Java8インストール
  2. eclipseインストール
  3. PostgreSQL11インストール

#eclipseにSpring Tool 3 Add-On(STS)インストール

eclipseマーケットプレイスでstsと検索しインストールボタンを押下。
スクリーンショット 2019-04-07 18.50.53.png

専用の開発ツール(STS)を使用してもいいですが、
今回はプラグインを使用します。

#Spring Bootプロジェクト作成
新規→プロジェクト→Spring スターター・プロジェクトを選択し、

スクリーンショット 2019-04-07 18.55.47.png

依存関係はこんな感じで。

スクリーンショット 2019-04-07 18.56.28.png

完了押下でプロジェクト作成はOK。

#フォルダ構成

スクリーンショット 2019-04-07 19.43.43.png
こんな感じで行きます。

#クラスの作成
###1-1コントローラ作成

HelloController.java
@Controller
public class HelloController {

	@Autowired
	private HelloService helloService;

	@RequestMapping(value="hello")
	public String init(Model model) {

		List<HelloBean> list = helloService.selectName();
		model.addAttribute("list",list);

		return "hello";
	}
}

###サービス作成

HelloSerivce.java
@Service
public class HelloService {

	@Autowired
	private HelloMapper helloMapper;

	public List<HelloBean> selectName(){
		return helloMapper.selectEmpAll();
	}
}

###Dao作成。

CREATE TABLE emp_name(
id int,
name varchar(20)
)

上記内容でテーブルを作成。
テスト用なので、PRIMARYもUNIQUEもとりあえず設定なしで。

HelloMapper.java
@Mapper
public interface HelloMapper {

	List<HelloBean> selectEmpAll();
}
HelloMapper.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.demo.mapper.HelloMapper">
	<select id="selectEmpAll" resultType="com.demo.bean.HelloBean">
		select * from
		emp_name
	</select>
</mapper>

###html作成

hello.html
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<table border="1">
		<tr>
			<th>社員番号</th>
			<th>社員名</th>
		</tr>
		<tr th:each="emp : ${list}">
			<td th:text="${emp.id}"></td>
			<td th:text="${emp.name}"></td>
		</tr>
	</table>
</body>
</html>

#環境設定

mybatisのconfigを作成。
テーブルのカラム名がスネークケースになっている場合はキャメルケースに変換し、
Beanの変数名に紐付けてくれる設定を追加。
今回は特に使用しないが覚えておきたい。

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>
	<settings>
		<setting name="mapUnderscoreToCamelCase" value="true"/>
	</settings>
</configuration>

作成したmybatis-configを読み込ませる

SampleApplication.java
package com.demo;

import javax.sql.DataSource;

import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.core.io.ClassPathResource;

@SpringBootApplication
public class SampleApplication {

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

    @Bean
    public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
        final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
        sessionFactory.setDataSource(dataSource);
        // コンフィグファイルの読み込み
        sessionFactory.setConfigLocation(new ClassPathResource("/mybatis-config.xml"));

        return sessionFactory.getObject();
    }
}

DBとの接続設定を追加。

application.properties
spring.datasource.driver-class-name=org.postgresql.Driver
spring.datasource.url=jdbc:postgresql://localhost:5432/sample
spring.datasource.username=postgres    #自身の環境に合わせて 
spring.datasource.password=postgres    #自身の環境に合わせて

以上で完了。

#実行
プロジェクトを右クリックし、実行→maven install
BUILD SUCCESSが出たら、再度右クリック、実行→Spring boot アプリケーション選択
ブラウザから http://localhost:8080/hello を開く。

スクリーンショット 2019-04-07 20.07.13.png

こんな感じになればOK。

#所感
SpringMVCに比べると設定は減ったのかな?
慣れればわかりやすいと思います。

16
22
0

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
16
22

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?