MyBatisの記述方法
iBatisもバージョン3からMyBatisというように名前が変わったようです。
mybatis-3.0.4.jarを使用しています。以下は、src/conf配下にmapper.xmlがある場合の記述方法です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
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のサンプルです。
1 2 3 4 5 6 7 8 |
<?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としていますが別名でもかまいません。
1 2 3 4 5 6 7 8 9 10 |
<?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は指定する必要がなく、省略可能です。
1 2 3 |
parameterType="java.util.Map" parameterType="Map" parameterType="map" |
上記はすべて同じ意味で、Mapとmapは、java.util.Mapのエイリアス(別名)です。
Mapをパラメータとする例です。
1 2 |
Map<String, String> param = new HashMap<String, String>(); param.put("key","123"); |
SQLの記述例です。
1 2 3 4 5 6 |
<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とした例です。
1 2 3 4 5 |
<select id="sqlid001" parameterType="Map" resultType="java.util.Map"> SELECT CODE, NAME, AGE FROM SAMPLE_TBL WHERE CODE = #{key} </select> |
取得するカラムが複数の場合はMapで受けることができます。
Javaのコーディング例です。
1 |
Map<String, Object> map = (Map<String, Object>) dbm.selectOne("sqlid001", map); |
KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^