MyBatisの記述方法

MyBatisiBATIS(MyBatis)

MyBatisの記述方法

iBatisもバージョン3からMyBatisというように名前が変わったようです。

mybatis-3.0.4.jarを使用しています。以下は、src/conf配下にmapper.xmlがある場合の記述方法です。

package jp.co.confrage;

public class DbManager {
  private Connection conn;
  private SqlSession session;
  // グローバル変数
  private static SqlSessionFactory sqlSessionFactory;
  /**
  * プライベートコンストラクタ
  */
  private DbManager() {
    // インスタンス不可
  }

  /**
   * SqlSessionFactoryインスタンスを同期をとって返す
   * @return sqlSessionFactory SqlSessionFactoryインスタンス
   */
  public static synchronized SqlSessionFactory getInstance() {
    if (sqlSessionFactory == null) {
      Reader reader = Resources.getResourceAsReader("conf/mapper.xml");
      sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
    }
    return sqlSessionFactory;
  }
  /**
   * トランザクションをコミットします。
   * @throws Exception 
   */
  public void commit() throws Exception {
    SqlSession session = sqlSessionFactory.openSession();
    if (session != null) {
      Connection conn = session.getConnection();
      conn.commit();
    }
  }
}

SqlSessionFactoryをシングルトンにする事によって1つのインスタンスを使用することを保証します。

MyBatisについてです。

mapper.xmlの記述方法

ここでは、mapper.xmlと命名していますが別名でもかまいません。

mapper.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>
  <mappers>
    <mapper resource="sqlmap/common/a.xml" />
    <mapper resource="sqlmap/common/b.xml" />
  </mappers>
</configuration>

src配下にsqlmap/common/a.xml等が配置されている例です。

a.xmlの記述方法

これもここではa.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="jp.co.confrage.domain.repostiory.CustomerRepostiory">
  <select id="selectTEST" parameterType="jp.co.confrage.Aaa1000Bean" resultType="Integer">
    SELECT COUNT(1)
    FROM テーブル名
  </select>
</mapper>

このように記述していきます。

parameterTypeとは

parameterTypeとは、SQL文中の置換パラメータにセットするパラメータのことで、java.util.Mapなどでも指定することができます。但し、置換パラメータがない場合はparameterTypeは指定する必要がなく、省略可能です。

parameterType="java.util.Map"
parameterType="Map"
parameterType="map"

上記はすべて同じ意味で、Mapとmapは、java.util.Mapのエイリアス(別名)です。

Mapをパラメータとする例です。

Map<String, String> param = new HashMap<String, String>();
param.put("key","123");

SQLの記述例です。

<select id="sqlid001" parameterType="Map" resultType="int">
SELECT
COUNT(1)
FROM SAMPLE_TBL
WHERE CODE = #{key}
</select>

resultTypeとは

resultTypeとは、SQL文の戻り値を受けるクラスを指定します。

intとすると、int型のラッパークラスであるIntegerとなります。

_intとするとプリミティブ型のint型となります。

以下、resultTypeをMapとした例です。

<select id="sqlid001" parameterType="Map" resultType="java.util.Map">
SELECT CODE, NAME, AGE
FROM SAMPLE_TBL
WHERE CODE = #{key}
</select>

取得するカラムが複数の場合はMapで受けることができます。

Javaのコーディング例です。

Map<String, Object> map = (Map<String, Object>) dbm.selectOne("sqlid001", map);

SQL文内のコメント

XMLファイル内のSQL構文内でのコメント記述方法です。

--の後ろが1行コメントになります。

<select id="selectOne" resultMap="BaseMap">
SELECT a.*
FROM テーブル a -- コメントです
</select>

コメント

タイトルとURLをコピーしました