Spring Boot DB連携

Spring BootでMySQLに接続しMyBatisを利用してみた

これまでは、Spring Bootアプリケーションで接続するデータベースはOracleでサンプルプログラムを作成してきたが、今回はMySQLに接続してみたので、そのサンプルプログラムを共有する。

前提条件

下記記事に記載されている、MySQLでのユーザー作成とuser_dataテーブル作成が完了していること。

MySQLでユーザーを作成しテーブルを追加してみたMySQLの場合は、Workbenchを利用すると、スキーマ(データベース)やユーザーの作成をGUIベースで実施できる。今回は、Work...

また、下記m_sexテーブルも作成が完了していること。
m_sexテーブル

さらに、下記記事の実装が完了していること。

MyBatisのSQL文をXMLファイルに配置してみたMyBatisを利用するプログラムで、これまではMapperクラスに直接SQL文を記載していたが、今回はXMLファイルにSQL文を移動し...



サンプルプログラムの作成

作成したサンプルプログラムの構成は以下の通り。
サンプルプログラムの構成
なお、上記の赤枠は、前提条件のプログラムから追加/変更したプログラムである。

build.gradleの内容は以下の通りで、MySQLに接続するための設定を追加している。

plugins {
	id 'org.springframework.boot' version '2.1.7.RELEASE'
	id 'java'
}

apply plugin: 'io.spring.dependency-management'

group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'

repositories {
	mavenCentral()
}

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
	implementation 'org.springframework.boot:spring-boot-starter-web'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
	compileOnly 'org.projectlombok:lombok:1.18.10'
	annotationProcessor 'org.projectlombok:lombok:1.18.10'
	//MySQLに接続するための設定
	compile group: 'mysql', name: 'mysql-connector-java', version: '8.0.21'
	implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.1.1'
}

application.propertiesの内容は以下の通りで、MySQLに接続するための設定に変更している。

server.port = 8084
# DB接続情報
spring.datasource.url=jdbc:mysql://localhost:3306/user01?serverTimezone=JST
spring.datasource.username=USER01
spring.datasource.password=USER01
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
# SQLSQLログ出力
logging.level.org.springframework=warn
logging.level.com.example.demo.UserDataMapper=debug



また、UserDataMapper.xmlの内容は以下の通りで、findMaxIdのSELECT文をMySQL用に変更している。

<?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.example.demo.UserDataMapper">
    <select id="findAll" resultType="com.example.demo.UserData">
        SELECT u.id, u.name, u.birth_year as birthY, u.birth_month as birthM
        , u.birth_day as birthD, u.sex as sex, m.sex_value as sex_value
        FROM USER_DATA u, M_SEX m WHERE u.sex = m.sex_cd ORDER BY u.id
    </select>
    <select id="findById" resultType="com.example.demo.UserData">
        SELECT id, name, birth_year as birthY
        , birth_month as birthM , birth_day as birthD, sex
        FROM USER_DATA WHERE id = #{id}
    </select>
    <delete id="deleteById" parameterType="java.lang.Long">
        DELETE FROM USER_DATA WHERE id = #{id}
    </delete>
    <insert id="create" parameterType="com.example.demo.UserData">
        INSERT INTO USER_DATA ( id, name, birth_year, birth_month, birth_day, sex )
        VALUES (#{id}, #{name}, #{birthY}, #{birthM}, #{birthD}, #{sex})
    </insert>
    <update id="update" parameterType="com.example.demo.UserData">
        UPDATE USER_DATA SET name = #{name}, birth_year = #{birthY}
        , birth_month = #{birthM}, birth_day = #{birthD}, sex = #{sex}
        WHERE id = #{id}
    </update>
    <select id="findMaxId" resultType="long">
        SELECT IfNull(MAX(id), 0) FROM USER_DATA
    </select>
</mapper>

その他のソースコード内容は、以下のサイトを参照のこと。
https://github.com/purin-it/java/tree/master/spring-boot-mysql-mybatis/demo



サンプルプログラムの実行結果

Spring Bootアプリケーションを起動し、「http://(サーバー名):(ポート番号)/」とアクセスすると、以下の画面が表示される。
サンプルプログラムの実行結果

その他、下記記事と同じように、データの追加・更新・削除を行うことができる。

Spring BootのWEB画面上でCRUDを含むOracleアクセス処理を実装してみた(完成イメージ編)今回は、C(Create)・R(Read)・U(Update)・D(Delete)を一通り含むOracle接続処理をSpring Boo...

要点まとめ

  • Spring BootでMySQLに接続するには、build.gradleにMySQLコネクタを追加し、DB接続先設定をMySQL用に変更すればよい。