Mybatis簡単入門


実際のプロジェクトでは、Hibernate永続層を開発してきましたが、Hibernateの緊密なパッケージ化により、ORMはデータベースの操作を非常に簡単で便利にしていますが、時にはさまざまな関連関係に遭遇し、柔軟ではありません.
MyBatisは、通常のSQLクエリー、ストレージ・プロシージャ、高度なマッピングをサポートする優れた永続層フレームワークです.MyBatisは、ほとんどのJDBCコードとパラメータの手動設定と結果セットの検索を排除します.MyBatisは、簡単なXMLまたは注記を使用して構成および元のマッピングに使用し、インタフェースとJavaのPOJOs(Plain Old Java Objects、通常のJavaオブジェクト)をデータベース内のレコードにマッピングします.
各MyBatisアプリケーションは主にSql SessionFactoryインスタンスを使用しており、1つのSqlSessionFactoryインスタンスはSqlSessionFactoryBuilderで入手できます.SqlSessionFactoryBuilderは、xmlプロファイルまたは事前定義された構成クラスのインスタンスから入手できます.
xmlファイルでSqlSessionFactoryインスタンスを構築するのは簡単です.この構成ではクラスパスリソース(classpath resource)を使用することを推奨しますが、ファイルパスまたはfile://で始まるurlで作成されたインスタンスを含む任意のReaderインスタンスを使用できます.MyBatisには、クラスパスや他の場所からリソースを容易にロードする方法がたくさんある実用的なクラス---resourcesがあります.
まずmybatisの主なプロファイルコンフィギュレーションを見てみましょう.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="UNPOOLED"><!--         -->
        <property name="driver" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql:///mybatis"/>
        <property name="username" value="root"/>
        <property name="password" value="123456"/>
      </dataSource>
    </environment>
  </environments>
  
  <mappers>
  <!--             -->
    <mapper resource="orm/Student.xml"/>
  </mappers>

</configuration>
持久層フレームワークの開発があったのは見ただけでわかるくだらないことは言わないで直接demoに入る
エンティティークラスStudent
/**
 *   
 *        
 *
 */
public class Student {
    private Integer id;//    
    private String name;//  
    private Integer age;//  
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Integer getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
    
}
エンティティークラスに対応するプロファイルStudent.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="Student">
  <!--resultMap                id          column          property          -->
  <resultMap type="orm.Student" id="Student">
    <id column="ID" jdbcType="INTEGER" property="id"/>
    <result column="NAME" jdbcType="VARCHAR" property="name"/>
    <result column="AGE" jdbcType="INTEGER" property="age"/>
  </resultMap>
  <!--           resultMap      resultMap id<span style="font-family: arial,   , sans-serif; text-indent: 2em;">         ,           --></span>
  <select id="selectID" parameterType="int" resultMap="Student">
  <!-- parameterType           java     int              _parameter   mybatis ONGL-->
    select ID,NAME,AGE from Student where ID=#{_parameter}
  </select>
  <insert id="save" parameterType="orm.Student">
  <!--          ,        #{       }   mybatis ONGL-->
  insert into Student(NAME,AGE) values(#{name},#{age})
  </insert>
  <delete id="deleteID" parameterType="int">
  	delete from Student where ID = #{_parameter}
  </delete>
</mapper>

テストクラスjava
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 orm.Student;

public class Test {
       public static void main(String[] args) throws IOException {
    	//                
   		Reader reader = Resources.getResourceAsReader("Configuration.xml");
   		//           SqlSessionFactory
   		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
   		//   sqlSessionFactory         
   		SqlSession sqlSession = sqlSessionFactory.openSession();
   		/**
   		 *     
   		 */
//   		Student student = new Student();
//   		student.setAge(12);
//   		student.setName("  ");
//   		insert        Student.xml      namespace . <insert/>    id             
//   		sqlSession.insert("Student.save",student);
//   		sqlSession.commit();//    
   		   /**
   		    *   
   		    */
//   		List<Student> list=sqlSession.selectList("Student.selectID", 1);
//   		for(Student s:list){
//   			System.out.println(s.getName()+"====="+s.getAge());
//   		}
   		/**
   		 *   
   		 */
//   		sqlSession.delete("Student.deleteID", 1);
//   		sqlSession.commit();
	}
}

具体的な操作はコードの中の注釈で、疑問があれば私と議論することができます.
以上は自分で勉強したときのまとめですが、間違いは避けられません.指摘があれば、感謝に堪えません.
主なjar mybatis-3.2.7.jar