Spring+MyBatis備忘録 その1 ~準備編~
Spring BootプロジェクトでMyBatisを使用して、PostgreSQLからのデータ抽出結果を表形式で出力する(JSP)、といったようなことがやりたい。
プロジェクトはSTSプラグイン導入済のEclipseで作成する。
この記事はコーディング以外の部分をまとめた。
参考
Spring Boot + MyBatisでデータベースに接続する方法
SpringBootやってみる~DBアクセス(mybatis)編~ データ取得①
Spring Boot+MyBatis+PostgreSQLでデータ取得まで
プロジェクト作成
追加したライブラリは以下3つ。
・MyBatis Framework
・PostgreSQL Driver
・Spring Web
とりあえずプロジェクト起動してみると今まで出くわさなかったエラーが発生。PostgreSQL Driverを追加したことによるっぽい。
***************************
APPLICATION FAILED TO START
***************************
Description:
Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.
Reason: Failed to determine a suitable driver class
Action:
Consider the following:
If you want an embedded database (H2, HSQL or Derby), please put it on the classpath.
If you have database settings to be loaded from a particular profile you may need to activate it (no profiles are currently active).
まあどうもデータソースの接続URLを記述する必要があるらしいので、src/main/resources/application.properties にJDBC接続URLを設定してやると、とりあえず起動はするようになる。ふーん。
spring.datasource.url=jdbc:postgresql://localhost:5432/testdb01
application.properties
JDBC用の接続情報を application.properties に記載してやる。
spring.datasource.driver-class-nameにPostgreSQLドライバーを使用する旨を明記する以外は普通にJDBCを使う際と同じような設定項目を以下変数に渡してやれば良い。
spring.datasource.driver-class-name=org.postgresql.Driver
spring.datasource.url=jdbc:postgresql://localhost:5432/testdb01
spring.datasource.username=testrole01
spring.datasource.password=testROLE01
pom.xml
今回はテンプレートエンジンにJSPを採用したいという都合で、pom.xmlに以下を追記する。
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
WEB-INFフォルダ作成
以下のフォルダをガシガシ作っていく。
・src/main/webapp
・src/main/webapp/WEB-INF
・src/main/webapp/WEB-INF/lib
・src/main/webapp/WEB-INF/view
使用用途は以下の通り。
lib
JSPでデータ表示する際にJSTL(JavaServer Pages Standard Tag Library)を使用したいため、そのjarファイルの置き場として用いる。
view
view置き場。
JSTLライブラリ配置
こっちの記事に書いた:JSTL備忘録
今回はJSPでデータを表示する際にループを使用したかったので、そのためにJSTLが必要だった。
JSTL API、JSTL 実装の2つのjarファイルを取得して、プロジェクトのライブラリフォルダ(src/main/webapp/WEB-INF/lib)に配置する。