naobe @ ウィキ

MyBatis

最終更新:

naobe

- view
管理者のみ編集可
OpenSourceに戻る

概要/特徴

  • iBatisの後継ソフトウェア

iBatisとの相違点

  • Mapperクラスを作成して、SQLの結果を取得できる。select要素のid属性を指定しないのでミスを削減できる
  • マップコンフィグファイルの要素に変更あり
  • springとの連携にMyBatisが用意したクラスを使う(Springの対応遅れのため)

設定ファイル

マップコンフィグファイル

クラスパスディレクトリに置く。
typeAliasは、mapperのresultmapで使う。

mybatis/kakeiboKakeiboMapConfig.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>
<typeAliases>
	<typeAlias alias="InOutName" type="suna.kakeibo.InOutName" />
</typeAliases>
<environments default="development">
	<environment id="development">
		<transactionManager type="JDBC" />
		<dataSource type="POOLED">
			<property name="driver" value="com.ibm.db2.jcc.DB2Driver" />
			<property name="url"
				value="jdbc:db2://localhost:50000/suna" />
			<property name="username" value="user" />
			<property name="password" value="password" />
		</dataSource>
	</environment>
</environments>
<mappers>
	<mapper resource="mybatis/kakeibo/mapper/inOutNameMapper.xml" />
</mappers>
</configuration>

マップファイル

クラスパスディレクトリに置く
inOutNameMapper.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="suna.kakeibo.mapper.InOutNameMapper">
<resultMap id="inOutNameResult" type="InOutName">
	<id property="nameId" column="NAMEID" />
	<result property="name" column="NAME" />
	<result property="nameType" column="NAMETYPE" />
</resultMap>
<select id="selectInoutName" resultMap="inOutNameResult">
	select NAMEID, NAME,
	NAMETYPE from INOUTNAME
</select>
</mapper>


プログラム

package test;

import java.io.IOException;
import java.io.Reader;
import java.util.List;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import suna.kakeibo.InOutName;
import suna.kakeibo.mapper.InOutNameMapper;

public class TestMyBatis {

	public static void main(String[] args) {
		TestMyBatis test = new TestMyBatis();
		try {
			test.execute();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	private void execute() throws IOException {
	//マップコンフィグファイルをロード
		String resource = "mybatis/kakeibo/kakeiboMapConfig.xml";
		Reader reader = Resources.getResourceAsReader(resource);
		SqlSessionFactory sqlMapper = 
			new SqlSessionFactoryBuilder().build(reader);
	//SqlSessionの作成
		SqlSession session = sqlMapper.openSession();
		try {
		//マッパクラス取得
			InOutNameMapper mapper = session.getMapper(InOutNameMapper.class);
		//検索実行
			List<InOutName> nameList = mapper.selectInoutName();
		//結果出力
			dbg("nameList:" + nameList);
		} finally {
			session.close();
		}
	}

	private void dbg(String string) {
		System.out.println(string);
	}
	
}

package suna.kakeibo.mapper;

import java.util.List;

import suna.kakeibo.InOutName;

public interface InOutNameMapper {

	public List<InOutName> selectInoutName();	
}
人気記事ランキング
ウィキ募集バナー