SSブログ

MyBatis のサンプルを作ってみる (select) [開発]

2014/10/11:
修正しました。


今回は、O/R Mapper で有名な MyBatis を学習します。Spring Framework と MyBatis と連携させたサンプルアプリを作成しました。動作するまでにかなり苦労したので備忘録として残します[ふらふら]

(1) データベースの構築
MySQLをインストールし、テスト用に以下のようなテーブルを準備しました。
tbl_hello_20141011.png

(2) Maven で下記依存を追加します。
groupId:org.mybatis
artifactId:mybatis-spring
version:1.2.2
groupId:org.mybatis
artifactId:mybatis
version:3.2.7
groupId:org.apache.commons
artifactId:commons-dbcp2
version:2.0.1
groupId:mysql
artifactId:mysql-connector-java
version:5.1.6
groupId:org.springframework
artifactId:spring-jdbc
version:4.0.6.RELEASE

(3) Springの設定ファイル (applicationContext.xml) を編集します。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:context="http://www.springframework.org/schema/context"
  xmlns:mybatis="http://mybatis.org/schema/mybatis-spring"
  xsi:schemaLocation="
    http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-4.0.xsd
    http://mybatis.org/schema/mybatis-spring
    http://mybatis.org/schema/mybatis-spring.xsd">

<!-- DataSource -->
<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource">
  <property name="driverClassName" value="com.mysql.jdbc.Driver" />
  <property name="url" value="jdbc:mysql://localhost/mybatis" />
  <property name="username" value="mybatis" />
  <property name="password" value="mybatis" />
</bean>

<!-- SqlSessionFactory -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean" >
  <property name="dataSource" ref="dataSource" />
</bean>

<!-- Mapper -->
<bean id="helloMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
  <property name="mapperInterface" value="sample.HelloMapper" />
  <property name="sqlSessionFactory" ref="sqlSessionFactory" />
</bean>

</beans>

(4) Mapper を作成します。
XMLでも定義できるようですが、今回はアノテーションを使います。
package sample;

import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

public interface HelloMapper {
  @Select("select * from tbl_hello where id = #{id}")
  Hello getById(@Param("id") int id); }
@Paramアノテーションについて : パラメータ (#{id}など) が単一の場合は、@Paramアノテーションを付けても付けなくても良いようです。もしパラメータが複数ある場合、@Paramアノテーションを引数の前につける必要があるようです。

(5) Entity を定義します。
package sample;

public class Hello {
  int id;
  String message;

  public int getId() {
    return id;
  }
  public void setId(int id) {
    this.id = id;
  }
  public String getMessage() {
    return message;
  }
  public void setMessage(String message) {
    this.message = message;
  }
}

(6) 動作確認用コードを作成します。
public class SampleMain {
  public static void main(String[] args) {
    String resource =
        "src/main/webapp/WEB-INF/applicationContext.xml";
    ApplicationContext ac =
        new FileSystemXmlApplicationContext(resource);
    HelloMapper helloMapper = (HelloMapper) ac.getBean("helloMapper");
    Hello hello = helloMapper.getById(1);
    System.out.println(hello.getMessage());
  }
}

実行すると「おはよう」と表示されます。


SpringによるWebアプリケーションスーパーサンプル 第2版

SpringによるWebアプリケーションスーパーサンプル 第2版

  • 作者: 株式会社クロノス
  • 出版社/メーカー: ソフトバンククリエイティブ
  • 発売日: 2010/11/12
  • メディア: 大型本

nice!(0)  コメント(0) 
共通テーマ:blog

nice! 0

コメント 0

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。