FrontPage > - MyBatisの覚書

サンプル用プロジェクト作成

  • データベースとしてPostgreSQL9.1を使用する。
    PostgreSQLはインストール済みとする。
  • IDEはEclipse4.2(Preiades)を使用する。

1. プロジェクト作成

  • [ファイル]→[新規]から「Mavenプロジェクト」を作成する。
  • pom.xmlのdependenciesに以下を追加する。
    例)
    	<dependencies>
    
    	・・・略
    
    		<dependency>
    			<groupId>org.mybatis</groupId>
    			<artifactId>mybatis</artifactId>
    			<version>3.1.1</version>
    		</dependency>
    		<dependency>
    			<groupId>postgresql</groupId>
    			<artifactId>postgresql</artifactId>
    			<version>9.1-901-1.jdbc4</version>
    		</dependency>
    	</dependencies>

2. 設定ファイル作成

  • プロパティファイルで接続情報を設定する。
    例) src/main/resources/com/ziqoo/mybatisSample/config.properties
    jdbc.driverClassName=org.postgresql.Driver
    jdbc.url=jdbc:postgresql://localhost:5432/myDb
    jdbc.username=user123
    jdbc.password=user456
  • mybatis設定ファイルを作成する。
    例) src/main/resources/com/ziqoo/mybatisSample/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>
    	<properties resource="com/ziqoo/mybatisSample/config.properties"/>
    
    	<environments default="development">
    		<environment id="development">
    			<transactionManager type="JDBC" />
    			<dataSource type="UNPOOLED">
    				<property name="driver" value="${jdbc.driverClassName}" />
    				<property name="url" value="${jdbc.url}" />
    				<property name="username" value="${jdbc.username}" />
    				<property name="password" value="${jdbc.password}" />
    			</dataSource>
    		</environment>
    	</environments>
    	<!-- Mapperのパッケージを指定 -->
    	<mappers>
    		<package name="com.ziqoo.mybatisSample.mapper" />
    	</mappers>
    </configuration>

3. エンティティクラス作成

  • テーブルのカラムをマッピングするクラスを作成する。
    例)
    package com.ziqoo.mybatisSample.entity;
    
    public class Emp {
       private Integer userId;
       private String userName;
    
       public Integer getUserId() {
           return userId;
       }
       public void setUserId(Integer userId) {
           this.userId = userId;
       }
       public String getUserName() {
           return userName;
       }
       public void setUserName(String userName) {
           this.userName = userName;
       }
    }

4. Mapperインターフェースの作成

  • テーブルにアクセスするためのMapperインターフェースを作成する。
    例)
    package com.ziqoo.mybatisSample.mapper;
    import com.ziqoo.mybatisSample.entity.Emp;
    public interface EmpMapper {
    	Emp getEmp(int userId);
    	int insert(Emp record);
    }
  • Mapperメソッドのシグネチャは、対応す SqlSessioのメソッドのシグネチャから
    ステートメントのIDを除いたものを指定可能。

5. Mapper XMLファイル作成

  • namespaceでクラスを、idでメソッドを指定する。
    例) src/main/resources/com/ziqoo/mybatisSample/mapper/EmpMapper.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="com.ziqoo.mybatisSample.mapper.EmpMapper" >
     <resultMap id="EmpResult" type="com.ziqoo.mybatisSample.entity.Emp" >
       <result column="user_id" property="userId" />
       <result column="user_name" property="userName"/>
     </resultMap>
    
     <select id="getEmp" resultMap="EmpResult" parameterType="int" >
       select user_id, user_name
       from emp
       where user_id = #{userId}
     </select>
     <insert id="insert" parameterType="com.ziqoo.mybatisSample.entity.Emp" >
       insert into emp (emp_no, e_name, job,
         mgr, hire_date, sal, comm,
         dept_no)
       values (#{empNo,jdbcType=INTEGER}, #{eName,jdbcType=VARCHAR}, #{job,jdbcType=VARCHAR},
         #{mgr,jdbcType=INTEGER}, #{hireDate,jdbcType=DATE}, #{sal,jdbcType=NUMERIC}, #{comm,jdbcType=NUMERIC},
         #{deptNo,jdbcType=INTEGER})
     </insert>
    </mapper>
  • ファイルの変わりにMapperクラスにアノテーションを記述する方法もある。

6. サンプルプログラム

  • 使用例
    例)
    package com.ziqoo.mybatisSample;
    import java.io.IOException;
    import java.io.InputStream;
    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 com.ziqoo.mybatisSample.entity.Emp;
    import com.ziqoo.mybatisSample.mapper.EmpMapper;
    public class App
    {
    	public static void main( String[] args ) throws IOException {
    		String resource = "com/ziqoo/mybatisSample/mybatis-config.xml";
    		InputStream in = Resources.getResourceAsStream(resource);
    		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);
    
    		SqlSession session = sqlSessionFactory.openSession();
    		try {
    			EmpMapper mapper = session.getMapper(EmpMapper.class);
    			Emp emp = mapper.getEmp(1000);
    			System.out.println("userName:"+emp.getUserName());
    			emp.setEmpNo(8000);
    			emp.seteName("山田");
    			mapper.insert(emp);
    			
    			session.commit();
    		} finally {
    			session.close();
    		}
    	}
    }




トップ   編集 凍結解除 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2012-09-16 (日) 02:19:26 (2220d)