MyBatisコアクラス

17508 ワード

記事の目次
  • 、Sql Session FactoryBuider
  • 、Sql Session Factory
  • 、Sql Session
  • 、Exector
  • 、SttementoHandler
  • 、Result SetHandler
  • MyBatisの開発手順から、MyBatisは主にいくつかの種類に使われていることが分かります.
    1、Sql Session FactoryBuider
    各MyBatisのアプリケーションの入り口はSql Session FactoryBuiderです.
    その役割はXMLプロファイルによってConfigrationオブジェクトを作成し(もちろんプログラム内で自分で作成することもできます)、そしてbuild方法によってSql Session Factoryオブジェクトを作成します.Mybatisを訪問するたびにSql Session FactoryBuiderを作成する必要はありません.一般的にはグローバルなオブジェクトを作成すればいいです.サンプルプログラムは以下の通りです.
    private static SqlSessionFactoryBuilder sqlSessionFactoryBuilder;
    private static SqlSessionFactory sqlSessionFactory;
    
    private static void init() throws IOException {
        String resource = "mybatis-config.xml";
        Reader reader = Resources.getResourceAsReader(resource);
        sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
        sqlSessionFactory = sqlSessionFactoryBuilder.build(reader);
    }
    
    // org.apache.ibatis.session.Configuration  mybatis      。
    
    mybatis-config.xmlの中の配置は最後にConfigrationという種類を解析します.
    Sql Session FactoryBuiderは、着信データストリーム(XML)からConfigrationオブジェクトを生成し、Configrationオブジェクトに基づいてデフォルトのSql Session Factory例を作成する.
    2、Sql Session Factory
    Sql Session Factoryオブジェクトの主な機能はSql Sessionオブジェクトを作成することであり、Sql Session FactoryBuiderオブジェクトと同じで、Mybatisに訪問するたびにSql Session Factoryを作成する必要はなく、グローバルオブジェクトを作成するのが一般的な方法です.Sql Session Factoryオブジェクトに必要な属性はConfigrationオブジェクトであり、それはMybatisグローバル構成を保存する構成オブジェクトであり、通常はSql Session FactoryBuiderによってXMLプロファイルから作成される.ここでは簡単な例を示します.
    
    
    <configuration>
    
    	<settings>
    		
    		<setting name="mapUnderscoreToCamelCase" value="true" />
    	settings>
    
    	
    	<typeAliases>
    		<package name="com.jourwon.mybatis.pojo" />
    	typeAliases>
    
    	
    	<environments default="development">
    		<environment id="development">
    			<transactionManager type="JDBC" />
    			<dataSource type="POOLED">
    				<property name="driver" value="com.mysql.jdbc.Driver" />
    				<property name="url"
    					value="jdbc:mysql://127.0.0.1:3306/test?useSSL=false" />
    				<property name="username" value="root" />
    				<property name="password" value="root" />
    			dataSource>
    		environment>
    	environments>
    
    	
    	<mappers>
    		<mapper resource="mybatis/mappers/UserMapper.xml" />
    	mappers>
    
    configuration>
    
    
    3、Sql Session
    Sql Sessionオブジェクトの主な機能は一回のデータベースのアクセスと結果のマッピングを完成することであり、それはデータベースのsession概念と類似しています.スレッドセキュリティではないので、Sql Sessionオブジェクトの作用領域はメソッド内を制限する必要があります.Sql Sessionのデフォルトの実装クラスはDefault Sql Sessionであり、2つの必須設定属性があります.ConfigrationとExector.Configrationの前の文はもうここで話しません.Sql Sessionのデータベース操作はすべてExectorによって行われます.
    Sql Session:デフォルトでDefault Sql Sessionを作成し、一級キャッシュを開いて、アクチュエータ、割当値を作成します.
    Sql Sessionには、Mapperオブジェクトを取得するための重要な方法があります.Mapperの対象は何ですか?Mybatisの公式マニュアルによると、アプリケーションはMybatisを初期化して起動する以外に、いくつかのインターフェースを定義する必要があります.インターフェースでデータベースにアクセスする方法を定義します.インターフェースのパッケージパスを保存するには、同名のXMLプロファイルを配置する必要があります.
    Sql SessionのgetMapper方法は、アプリケーションとMybatisの紐付けを結び付けることで、アプリケーションがgetMapperにアクセスするとき、Mybatisは着信するインターフェースタイプと対応するXMLプロファイルに基づいて、エージェントオブジェクトを生成します.このエージェントはMapperオブジェクトといいます.アプリがMapperオブジェクトを獲得したら、このMapperオブジェクトを通じてMybatisのSql Sessionオブジェクトにアクセスして、Mybatisフローに挿入する目的に達するはずです.
    UserMapperインターフェース
    public interface UserMapper {
    	
    	//       
    	public List<User> selectAll();
        
    }
    
    UserMapper.xmlファイル
    
    
    
    <mapper namespace="com.jourwon.mybatis.mapper.UserMapper">
    
    	<select id="selectAll" resultType="User">
    		SELECT * FROM user
    	select>
    
    mapper>
    
    テストクラス
    public class MybatisTest {
    
    	private UserMapper userMapper;
    
    	@Before
    	public void init() throws Exception {
    		String resource = "mybatis/mybatis-config.xml";
    		//        
    		InputStream inputStream = Resources.getResourceAsStream(resource);
    		//       
    		SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);
    		//           
    		SqlSession session = factory.openSession(true);
    		
    		userMapper = session.getMapper(UserMapper.class);
    	}
    
    	@Test
    	public void tesSelectAll() {
    		List<User> userList = userMapper.selectAll();
    		for (User user : userList) {
    			System.out.println(user);
    		}
    	}
    
    }
    
    4、Exector
    ExectorオブジェクトはConfigrationオブジェクトを作成する際に作成され、Configrationオブジェクトにキャッシュされます.Exectorオブジェクトの主な機能は、Sttement Handlerを呼び出してデータベースにアクセスし、クエリ結果をキャッシュに保存することです.
    5、Sttement Handler
    Sttement Handlerは本当にデータベースにアクセスするところであり、Result SetHandlerを呼び出してクエリ結果を処理します.
    6、Result SetHandler
    クエリの結果を処理します.