「Java」Mybatis 使ってみた

ちょっと Mybatis を使ってみたので、その時のメモ。
バージョンは、Mybatis 3 系 ( 3.2.4 ) で。

・mybatis - SQL Mapping Framework for Java - Google Project Hosting
https://code.google.com/p/mybatis/

[ 環境情報 ]
Windows 7 SP1
Java SE 7 Update 45
Mybatis 3.2.4

CentOS 5.5
Oracle Database 11.2.0.1.0


今回は以下のドキュメントを参考にしつつ、select と insert 発行する簡単なサンプル作ってみました。

・MyBatis - MyBatis 3 | イントロダクション
http://mybatis.github.io/mybatis-3/ja/index.html


■ MybatisTest.java

package test.mybatis;

import java.io.FileInputStream;
import java.util.List;

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

public class MybatisTest {
	public static void main(String[] args) throws Exception {
		FileInputStream fis = new FileInputStream("mybatis\\mybatis-config.xml");
		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(fis);
		SqlSession session = sqlSessionFactory.openSession(true);
		TestMapper mapper = session.getMapper(TestMapper.class);

		// id="select"
		Test t1 = mapper.select(1);
		System.out.println(t1.getId() + ":" + t1.getName());

		// id="insert"
		Test t2 = new Test();
		t2.setId(3);
		t2.setName("oro");
		mapper.insert(t2);

		// id="selectALL"
		List<Test> list = mapper.selectALL();
		for (Test t : list) {
			System.out.println(t.getId() + ":" + t.getName());
		}

		session.close();
	}
}

■ Test.java

package test.mybatis;

public class Test {
	private int id;
	private String name;

	public int getId() { return id;	}
	public void setId(int id) { this.id = id; }

	public String getName() { return name; }
	public void setName(String name) { this.name = name; }
}

■ TestMapper.java

package test.mybatis;

import java.util.List;

public interface TestMapper {
	Test select(int id);
	List<Test> selectALL();
	void insert(Test t);
}

■ 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="oracle.jdbc.driver.OracleDriver"/>
        <property name="url" value="jdbc:oracle:thin:@***.***.***.***:1521:orcl"/>
        <property name="username" value="test"/>
        <property name="password" value="test"/>
      </dataSource>
    </environment>
  </environments>
  <mappers>
    <mapper resource="test/mybatis/TestMapper.xml"/>
  </mappers>
</configuration>

■ TestMapper.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="test.mybatis.TestMapper">
  <select id="select" resultType="test.mybatis.Test">
    select * from test where id = #{id}
  </select>
  <select id="selectALL" resultType="test.mybatis.Test">
    select * from test
  </select>
  <insert id="insert" parameterType="test.mybatis.Test">
    insert into test values (#{id}, #{name})
  </insert>
</mapper>

■ テーブル作成 SQL

create table test (id int, name varchar2(50));


ひとまず上記で動きました。
使い込むにはもっと「ドキュメントの読み込み」、「動作確認」が必要ですが、さわりとしてはええかなと思ってます。
※ openSession() 引数で自前のコネクション使えたり、Mapper の XMLアノテーションで書けたりと、いろいろできそうな感じです。

以上です。