Spring Boot+MyBatis+PostgreSQLでデータ取得まで
ちょっと前はそんなに悩まなかったけど、
最近やったら意外と手こずったので、自分用メモに。
準備
- Java8インストール
- eclipseインストール
- PostgreSQL11インストール
eclipseにSpring Tool 3 Add-On(STS)インストール
eclipseマーケットプレイスでstsと検索しインストールボタンを押下。
専用の開発ツール(STS)を使用してもいいですが、
今回はプラグインを使用します。
Spring Bootプロジェクト作成
新規→プロジェクト→Spring スターター・プロジェクトを選択し、
依存関係はこんな感じで。
完了押下でプロジェクト作成はOK。
フォルダ構成
クラスの作成
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)
)
@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";
}
}
@Service
public class HelloService {
@Autowired
private HelloMapper helloMapper;
public List<HelloBean> selectName(){
return helloMapper.selectEmpAll();
}
}
CREATE TABLE emp_name(
id int,
name varchar(20)
)
上記内容でテーブルを作成。
テスト用なので、PRIMARYもUNIQUEもとりあえず設定なしで。
@Mapper
public interface HelloMapper {
List<HelloBean> selectEmpAll();
}
<?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作成
<!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の変数名に紐付けてくれる設定を追加。
今回は特に使用しないが覚えておきたい。
<?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を読み込ませる
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との接続設定を追加。
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 を開く。
こんな感じになればOK。
所感
SpringMVCに比べると設定は減ったのかな?
慣れればわかりやすいと思います。
Author And Source
この問題について(Spring Boot+MyBatis+PostgreSQLでデータ取得まで), 我々は、より多くの情報をここで見つけました https://qiita.com/kouynhr02/items/19859cbb10efd204b345著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .