モーダルを閉じる工作HardwareHub ロゴ画像

工作HardwareHubは、ロボット工作や電子工作に関する情報やモノが行き交うコミュニティサイトです。さらに詳しく

利用規約プライバシーポリシー に同意したうえでログインしてください。

目次目次を開く/閉じる

MyBatis 3 サンプルコード (Java/MySQL/Gradle)

モーダルを閉じる

ステッカーを選択してください

お支払い手続きへ
モーダルを閉じる

お支払い内容をご確認ください

購入商品
」ステッカーの表示権
メッセージ
料金
(税込)
決済方法
GooglePayマーク
決済プラットフォーム
確認事項

利用規約をご確認のうえお支払いください

※カード情報はGoogleアカウント内に保存されます。本サイトやStripeには保存されません

※記事の執筆者は購入者のユーザー名を知ることができます

※購入後のキャンセルはできません

作成日作成日
2017/04/14
最終更新最終更新
2019/07/19
記事区分記事区分
一般公開

目次

    3Dモデリングとゲームエンジンに興味があります。Blenderも活用!

    MyBatis は、JDBC を直接利用せずに、XML ファイル等で用意した SQL 文を利用して DB にアクセスするための Java ライブラリです。内部的には JDBC が利用されているため、JDBC のインストールは必要です。同様のライブラリに Hibernate ORM があります。DB は特に MySQL を対象として、MyBatis バージョン 3 の簡単なサンプルコードをまとめます。

    インストール

    ここでは特にビルドツール Gradle を利用したインストールを行います。Mavenなどの場合も手順は同様です。MyBatis バージョンは、こちらのページに記載されています。最新版は The Central Repository で確認できます。今回は org.mybatis : mybatis : 3.4.4 が該当するページです。

    mkdir mybatis-demo
    cd mybatis-demo
    gradle init --type java-application
    

    build.gradle

    apply plugin: 'java'
    apply plugin: 'application'
    
    repositories {
        jcenter()
    }
    
    dependencies {
        compile 'org.mybatis:mybatis:3.4.4'
        compile 'mysql:mysql-connector-java:5.1.41'
        testCompile 'junit:junit:4.12'
    }
    
    mainClassName = 'org.mybatis.example.App'
    

    以下のファイルを作成します。

    mkdir -p src/main/java/org/mybatis/example
    mv src/main/java/App.java src/main/java/org/mybatis/example/
    mkdir -p src/test/java/org/mybatis/example
    mv src/test/java/AppTest.java src/test/java/org/mybatis/example/
    

    App.java

    package org.mybatis.example;
    
    public class App {
        public String getGreeting() {
            return "Hello world.";
        }
    
        public static void main(String[] args) {
            System.out.println(new App().getGreeting());
        }
    }
    

    AppTest.java

    package org.mybatis.example;
    
    import org.junit.Test;
    import static org.junit.Assert.*;
    
    public class AppTest {
        @Test public void testAppHasAGreeting() {
            App classUnderTest = new App();
            assertNotNull("app should have a greeting", classUnderTest.getGreeting());
        }
    }
    

    動作確認します。

    $ ./gradlew run
    ...
    
    Hello world.
    

    必要に応じて Eclipse 等に import します。

    サンプルコード

    設定ファイルの作成

    MyBatis 設定ファイルを作成します。DB 接続情報や、SQL を記載した XML の情報を設定します。

    mkdir -p src/main/resources
    touch src/main/resources/mybatis-config.xml
    

    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>
      <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/mydb"/>
            <property name="username" value="root"/>
            <property name="password" value=""/>
          </dataSource>
        </environment>
      </environments>
      <mappers>
        <mapper resource="BlogMapper.xml"/>
      </mappers>
    </configuration>
    

    SQL XML の作成

    touch src/main/resources/BlogMapper.xml
    

    BlogMapper.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="org.mybatis.example.BlogMapper">
      <select id="selectId" resultType="int">
        SELECT id FROM blogs WHERE id = #{id}
      </select>
    </mapper>
    

    検証用データの登録

    mysql> CREATE TABLE blogs (id INT, title VARCHAR(128));
    mysql> INSERT INTO blogs VALUES (1, 'xxx'), (2, 'yyy');
    

    実行

    App.java

    package org.mybatis.example;
    
    import java.io.IOException;
    
    import org.apache.ibatis.io.Resources;
    import org.apache.ibatis.session.SqlSession;
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    
    public class App {
    
        public String getGreeting() {
            return "Hello world.";
        }
    
        public static void main(String[] args) {
    
            SqlSession session = null;
            try {
                SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis-config.xml"));
                session = sqlSessionFactory.openSession();
            } catch (IOException e) {
                e.printStackTrace();
            }
    
            if(session != null) {
                try {
                    int id = session.selectOne("org.mybatis.example.BlogMapper.selectId", 2);
                    System.out.println(id);
                } finally {
                    session.close();
                }
            }
        }
    }
    

    実行例

    $ ./gradlew run
    ...
    
    2
    

    インターフェースを利用する場合

    前述のとおり XML ファイルだけでも動作しますが、追加でインターフェースを定義すると、以下のような記法が利用できるようになります。

    BlogMapper.java

    package org.mybatis.example;
    
    public interface BlogMapper {
        int selectId(int id);
    }
    

    App.java

    BlogMapper mapper = session.getMapper(BlogMapper.class);
    System.out.println(mapper.selectId(2));
    
    Likeボタン(off)0
    詳細設定を開く/閉じる
    アカウント プロフィール画像

    3Dモデリングとゲームエンジンに興味があります。Blenderも活用!

    記事の執筆者にステッカーを贈る

    有益な情報に対するお礼として、またはコメント欄における質問への返答に対するお礼として、 記事の読者は、執筆者に有料のステッカーを贈ることができます。

    >>さらに詳しくステッカーを贈る
    ステッカーを贈る コンセプト画像

    Feedbacks

    Feedbacks コンセプト画像

      ログインするとコメントを投稿できます。

      ログインする

      関連記事

      • Spring Security フォームログインのサンプルコード
        Spring フレームワークによる Web アプリケーション開発で、ログイン処理を実装する際は Spring Security が便利です。ここでは特に Spring Boot で Web アプリケーションを開発する場合を対象とし、フォームによる ID/Password ログインを行うためのサンプルコードをまとめます。 公式ドキュメント [Spring Security チュートリアル](http...
        えびちゃんえびちゃん11/4/2019に更新
        いいねアイコン画像0
      • Java配列の宣言方法 (C/C++との違い)
        Javaの配列 Javaの配列宣言方法はC/C++と似ているようで若干異なる。 初期化しない場合 C/C++の int array[10]; はJavaでは int array[] = new int[10]; となる。同様にC/C++の int array[3][3]; はJavaでは int array[][] = new int[3][3]; となる。 初期化
        てんとうむしてんとうむし4/13/2018に更新
        いいねアイコン画像0
      • PlantUML による UML 図の描き方
        サムネイル画像-c788fffde5
        PlantUML はテキスト形式で表現されたシーケンス図やクラス図といった UML (Unified Modeling Language) 図の情報から画像を生成するためのツールです。簡単な使い方をまとめます。 インストール方法の選択 Atom や Eclipse のプラグインをインストールしてエディタから利用する方法、JAR をダウンロードして Java コマンドで実行する方法、Redmine ...
        kentakenta12/21/2019に更新
        いいねアイコン画像0
      • Akka HTTP サンプルコード (Scala)
        サムネイル画像-a98142497c
        Akka アクターを用いて実装された汎用 HTTP フレームワークです。Spray の後継です。コアモジュールである akka-http-core は 2016/2/17 に experimental が外れました。akka-http などのいくつかのサブモジュールは 2016/3/1 現在 experimental のままですが、基本的な
        雄太雄太9/7/2021に更新
        いいねアイコン画像0
      • Kestrel の使用例
        Kestrel は Message Queue (MQ) の実装のひとつです。一般に MQ はアプリケーション間やプロセス間、スレッド間で非同期に通信するために用いられます。メッセージの送信側は MQ に書き込めば受信側の応答を待たずに次の処理に非同期に進むことができます。Kestrel はわずか 2500 行程の Scala で実装されており JVM で動作します。MQ 自体はメモリ上に存在する...
        したくんしたくん9/12/2017に更新
        いいねアイコン画像0