「MyBatisを使ってみる」の版間の差分

提供: tknotebook
移動: 案内検索
 
(プロジェクトの設定)
65行: 65行:
 
</pre>
 
</pre>
  
また、プロジェクトの src/main/resouce には、ログ出力のための logback 用の設定ファイルを置きます。
+
また、プロジェクトの src/main/resouces には、ログ出力のための logback 用の設定ファイルを置きます。
 
名称は logback.xml 内容は以下のような感じでよいでしょう。
 
名称は logback.xml 内容は以下のような感じでよいでしょう。
  
133行: 133行:
 
この辺慣れている方は、ログ周りの dependencies の設定や 設定ファイルの内容はお好きなようにしてください。
 
この辺慣れている方は、ログ周りの dependencies の設定や 設定ファイルの内容はお好きなようにしてください。
 
log4j などを使いたい人もいるでしょう。
 
log4j などを使いたい人もいるでしょう。
 +
 +
 +
==MyBatisの設定==
 +
 +
決まり切った設定ですが、プロジェクトの src/main/resources に mybatis-config.xml というファイルを作り
 +
中身はこんな感じにします。
 +
 +
<pre>
 +
<?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>
 +
        <!-- アンダースコアによって単語を分けている名前がCamel形式にマッチするように変更 -->
 +
        <setting name="mapUnderscoreToCamelCase" value="true" />
 +
    </settings>
 +
    <typeAliases>
 +
        <typeAlias alias="Card" type="info.nakamuri.app.spike.mybatisspike001.Card" />
 +
    </typeAliases>
 +
    <environments default="development">
 +
        <environment id="development">
 +
            <transactionManager type="JDBC" />
 +
            <dataSource type="POOLED">
 +
                <property name="driver" value="com.mysql.jdbc.Driver" />
 +
                <property name="url" value="jdbc:mysql://localhost:3306/flashcard" />
 +
                <property name="username" value="MySQLのユーザ名" />
 +
                <property name="password" value="MySQLのパスワード" />
 +
            </dataSource>
 +
        </environment>
 +
    </environments>
 +
    <mappers>
 +
        <mapper resource="CardMapper.xml" />
 +
    </mappers>
 +
</configuration>
 +
</pre>
 +
 +
この例では '''MySQL''' の '''flashcard''' というデータベースの '''cards''' というテーブルを読みます。
 +
info.nakamuri.app.spike.mybatisspike001.Card
 +
というクラスは、cardテーブルのレコードの内容を受け取るクラスで、'''typeAlisa タグ'''では
 +
後で別の設定ファイルの中でこのクラスを指定する時、クラス名を FQCNで指定するのは長いので
 +
短い名前 '''Card''' を定義しています。
 +
 +
'''environmentタグ'''の中はおなじみの JDBC の接続パラメータで、
 +
<pre><transactionManager type="JDBC" /></pre>
 +
は、トランザクションの制御をプログラムで直に制御することを表します。
 +
<pre><dataSource type="POOLED"></pre>
 +
はデータベースコネクションがプールされることを示しています。
 +
 +
mappersタグは今回の主役 mapperインターフェースとそのステートメント(メソッド)を定義する
 +
ファイルがどこにあるかを示しています。

2016年11月16日 (水) 09:38時点における版

メインページ>コンピュータの部屋#Java>MyBatis Tips


これは MyBatis のごく簡単なチュートリアルです。MyBatis を使ってある単独のテーブルのレコードを読む簡単な例を示します。

準備

簡単に始めるなら Maven を使うのがよいでしょう。Eclipse(現在の版は 4.6Neon)のPleiades には Maven が含まれておりますので Pleiades(Neon, All in One)をインストールされていれば準備完了です。Java は 今時ですから 1.8 にしてください。

プロジェクトの設定

Pleades で Mavenプロジェクトを作成したら、pom.xml の dependencies を以下のように設定します。

	<dependencies>
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis</artifactId>
			<version>3.4.1</version>
		</dependency>
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>[5.1.40]</version>
		</dependency>
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-api</artifactId>
			<version>1.7.21</version>
		</dependency>
		<dependency>
			<groupId>ch.qos.logback</groupId>
			<artifactId>logback-classic</artifactId>
			<version>1.1.7</version>
		</dependency>
		<dependency>
			<groupId>ch.qos.logback</groupId>
			<artifactId>logback-core</artifactId>
			<version>1.1.7</version>
		</dependency>
	</dependencies>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>[5.1.40]</version>
</dependency>

は MySQL を使うためです。他のデータベースを使うなら適宜変更してください。

また、Javaコンパイラーのバージョンとソースコードのエンコーディングの指定も忘れずに。

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <java.version>1.8</java.version>
    <maven.compiler.target>${java.version}</maven.compiler.target>
    <maven.compiler.source>${java.version}</maven.compiler.source>
</properties>

また、プロジェクトの src/main/resouces には、ログ出力のための logback 用の設定ファイルを置きます。 名称は logback.xml 内容は以下のような感じでよいでしょう。

<?xml version="1.0" encoding="UTF-8" ?>

<!--suppress ALL -->
<configuration>

    <!--変数の定義を行います。2行目は外部のプロパティファイルの内容から定義します。-->
    <property name="LOG_DIR" value="c:/logback_logs" />

    <!-- 標準出力に出力する設定です。-->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <!--アペンダでのレベル設定-->
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>TRACE</level>
        </filter>
        <target>System.out</target>
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{80} - %msg%n</pattern>
        </encoder>
        <withJasi>true</withJasi>
    </appender>

    <!--ログファイルを出力するシンプルな設定です。-->
    <appender name="FILE" class="ch.qos.logback.core.FileAppender">
        <!--アペンダでのレベル設定-->
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>TRACE</level>
        </filter>
        <!--<file>${LOG_DIR}/Trace.log</file>-->
        <file>log/Trace.log</file>
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{80} - %msg%n</pattern>
        </encoder>
    </appender>

    <!--ログファイルをアーカイブする設定です。アーカイブは1時間毎に行います。-->
    <appender name="ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--アペンダでのレベル設定-->
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>INFO</level>
        </filter>
        <!--<file>${LOG_DIR}/Rolling.log</file>-->
        <file>log/Rolling.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--<fileNamePattern>${LOG_DIR}/Rolling_%d{yyyy-MM-dd_HH}.log</fileNamePattern>-->
            <fileNamePattern>log/Rolling_%d{yyyy-MM-dd_HH}.log</fileNamePattern>
            <maxHistory>30</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{80} - %msg%n</pattern>
        </encoder>
    </appender>

    <!-- ルートから全てのログをアペンダに流し、アペンダでフィルタリングを行う方式とします。-->
    <root level="TRACE">
        <appender-ref ref="STDOUT"/>
        <appender-ref ref="FILE"/>
        <appender-ref ref="ROLLING"/>
    </root>
</configuration>

この辺慣れている方は、ログ周りの dependencies の設定や 設定ファイルの内容はお好きなようにしてください。 log4j などを使いたい人もいるでしょう。


MyBatisの設定

決まり切った設定ですが、プロジェクトの src/main/resources に 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>
        <!-- アンダースコアによって単語を分けている名前がCamel形式にマッチするように変更 -->
        <setting name="mapUnderscoreToCamelCase" value="true" />
    </settings>
    <typeAliases>
        <typeAlias alias="Card" type="info.nakamuri.app.spike.mybatisspike001.Card" />
    </typeAliases>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC" />
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver" />
                <property name="url" value="jdbc:mysql://localhost:3306/flashcard" />
                <property name="username" value="MySQLのユーザ名" />
                <property name="password" value="MySQLのパスワード" />
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="CardMapper.xml" />
    </mappers>
</configuration>

この例では MySQLflashcard というデータベースの cards というテーブルを読みます。

info.nakamuri.app.spike.mybatisspike001.Card

というクラスは、cardテーブルのレコードの内容を受け取るクラスで、typeAlisa タグでは 後で別の設定ファイルの中でこのクラスを指定する時、クラス名を FQCNで指定するのは長いので 短い名前 Card を定義しています。

environmentタグの中はおなじみの JDBC の接続パラメータで、

<transactionManager type="JDBC" />

は、トランザクションの制御をプログラムで直に制御することを表します。

<dataSource type="POOLED">

はデータベースコネクションがプールされることを示しています。

mappersタグは今回の主役 mapperインターフェースとそのステートメント(メソッド)を定義する ファイルがどこにあるかを示しています。