Mybatis最初から最後まで(一)--MyBatisの概要とプロジェクトの構築

6775 ワード

一、紹介
MyBatisの前身はiBATISで、ClintonBeginが2001年に発起したオープンソースプロジェクトで、当初は暗号ソフトの開発に重点を置いていたが、その後Javaベースの永続層フレームワークに発展した.2004年、ClintonはiBATISの名前とソースコードをApacheソフトウェア財団に寄付し、次の6年間、オープンソースソフトウェアの世界は大きく変化し、すべての開発実践、インフラ、ライセンス、さらにはデータベース技術も徹底的に変化した.2010年、コア開発チームはApacheソフトウェア財団を離れ、iBATISをMyBatisに改名することを決めた.
MyBatisは、カスタムSQLクエリー、ストレージ・プロシージャ、および高度なマッピングをサポートする優れた永続層フレームワークであり、ほとんどのJDBCコードとパラメータの手動設定、および結果セットの取得を排除します.MyBatisはXMLまたは注釈を使用して構成およびマッピングを行うことができ、MyBatisはパラメータを構成されたSQLにマッピングすることによって最終的に実行されるSQL文を形成し、最後にSQLを実行した結果をJavaオブジェクトにマッピングして返す.
他のORM(オブジェクトリレーションシップマッピング)フレームワークとは異なり、MyBatisはJavaオブジェクトをデータベーステーブルに関連付けるのではなく、JavaメソッドをSQL文に関連付ける.MyBatisでは、ストレージ・プロシージャ、ビュー、複雑なクエリー、データベース固有の機能など、データベースのさまざまな機能を十分に活用できます.残されたデータベース、不正なデータベースを操作する場合、またはSQLの実行を完全に制御する場合は、MyBatisが良い選択になります.
JDBCに比べ、MyBatisは関連コードを簡略化し、SQL文は1行のコードで実行できます.MyBatisは、SQL文の実行結果をオブジェクトツリーに宣言的にマッピングするマッピングエンジンを提供します.SQL文は、組み込まれたクラスXML式言語を使用することによって動的に生成されます.MyBatisは宣言型データキャッシュ(declarativedataching)をサポートします.SQL文に「キャッシュ可能」とマークが付けられている場合、最初に実行するとデータベースから取得したすべてのデータがキャッシュに格納され、後で実行すると、データベースに再ヒットするのではなく、キャッシュから結果が読み出されます.MyBatisは、デフォルトでJavaHashMapベースのキャッシュ実装と、OSCache、Ehcache、Hazeleast、およびMemcachedに接続するためのデフォルトコネクタを提供し、他のキャッシュ実装のためにAPIも提供します.
二、Maven依存を追加する

    junit
    junit
    4.12
    test



    org.mybatis
    mybatis
    3.5.2


    mysql
    mysql-connector-java
    5.1.38


    org.slf4j
    slf4j-api
    1.7.12


    org.slf4j
    slf4j-log4j12
    1.7.12


    log4j
    log4j
    1.2.17
三、運行項目
3.1 データベースの準備
  • ローカルでmybatisのデータベースを作成します.
  • country(国)のテーブルを作成し、3つのフィールド「id」、「countryname」(名前)、「countycode」(コード)を追加します.
  • 3.2 Mybatisプロファイル
    XML形式で構成し、まずsrc/main/resourcesの下にmybatis-config.xmlプロファイルを作成し、次のように入力します.
    
    
    
        
            
        
        
            
        
        
            
                
                    
                
                
                    
                    
                    
                    
                
            
        
        
            
        
    
    3.3対応するエンティティとMapper.xmlファイルの作成
    MyBatisは結果マッピングフレームワークであり、ここで作成したエンティティクラスは実際にはデータ値オブジェクト(DataValueObject)であり、実際のアプリケーションでは、INSERT、UPDATE、DELETE、および簡単なSELECT操作に使用されるテーブルが一般的に1つのエンティティに対応するため、この簡単なオブジェクトをエンティティクラスと呼ぶ.
    Mapperのネーミング方法について:MyBatisでは、MyBatis公式の習慣により、XMLやインタフェースクラス名の接尾辞としてMapperを使用するのが一般的ですが、ここのMapperは私たちがよく使うDAO接尾辞と似ていて、ただの習慣で、本書ではすべてMapper接尾辞を使用しています.通常XMLはMapper.xmlファイルと呼ばれ、インタフェースはMapperインタフェースと呼ばれ、実際のアプリケーションでは自分のニーズに合わせてネーミング方法を定義することができます.
     属性id,countryname,countrycodeを含むCountryのJava Beanを作成します.
    
    
    
        
    
    
  • :XMLのルート要素、属性namespaceは現在のXMLのネーミングスペースを定義します.

  • idプロパティ:現在のSELECTクエリの唯一のidを定義します.
    resultType:現在のクエリーの戻り値タイプを定義します.ここではエンティティクラスCountryを指します.前の構成で説明した別名は主にここで使用されます.別名が設定されていない場合は、resultType="tk.mybatis.simple.model.country"と書く必要があります.
    selectid,...:SQL文をクエリーします.
  • 3.4ログ4 jの構成 
    src/main/resourcesにlog 4 j.propertiesプロファイルを追加し、次のように入力します.
    #    
    log4j.rootLogger=ERROR,stdout
    #MyBatis    
    log4j.logger.tk.mybatis.simple.mapper=TRACE
    #       
    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
    ログ4 jログコンポーネントを使用したことがある人なら誰でも知っているかもしれませんが、構成中のlog 4 j.logger.tk.mybatis.simple.mapperはtk.mybatis.simple.mapperパッケージに対応していますが、この例ではJavaディレクトリの下にこのパッケージ名はなく、リソースディレクトリの下にmapperディレクトリがあるだけです.
    MyBatisのログ実装では,パケット名とは実際にはXMLアラインメントにおける口amespace属性値の一部である.後述の章でインタフェースを組み合わせて使用する関連内容を説明すると、namespace属性値はインタフェースの全限定クラス名と同じである必要があるため、Javaのパッケージに本当に対応します.純粋な注釈方式を使用する場合、純粋なパッケージ名が使用されます.
    MyBatisログの最下位レベルはTRACEです.このログレベルでは、開発時に特に適したSQL実行中の詳細が出力されます.
    3.5 Mybatisコアコードのテスト
    @Test
    public void testSelectAll() {
        Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
        List countryList = sqlSession.selectList("selectAll");
        System.out.println(countryList);
    }
    上記のコードについて簡単に説明します.具体的には以下の通りです.
  • Resourcesツールクラスを使用してmybatis-config.xmlプロファイルをReaderに読み込みます.
  • SqlSessionFactoryBuilder構築クラスを使用してReaderを使用してSqlSessionFactoryファクトリオブジェクトを作成します.SqlSessionFactoryオブジェクトを作成する過程で、まずmybatis-config.xmlプロファイルを解析し、プロファイルの中のmappersプロファイルを読み込むと、すべてのMapper.xmlを読み込んで具体的な方法の解析を行い、これらの解析が完了すると、SqlSessionFactoryにはすべてのプロパティ構成とSQLの実行に関する情報が含まれます.
  • 使用時にSqlSessionFactoryファクトリオブジェクトからSqlSessionoを取得します.
  • SqlSessionのselectListメソッドによりCountryMapper.xml中のid=「selectAll」メソッドを検索し、SQLクエリを実行します.
  • MyBatis下位層JDBCを使用してSQLを実行し、クエリー結果セットResultSetを取得した後、resultTypeの構成に従って結果をCountryタイプのセットにマッピングし、クエリー結果を返します.
  • これで最後のクエリー結果countryListが得られ、簡単にコンソールに出力されます.
  • 最後にSqlSessionを閉じることを忘れないでください.そうしないと、接続が閉じられていないため、データベースの接続数が多すぎて、システムが崩壊します.
  • ログから完全なSQL出力と結果出力を見ることができ、ログに対応するレベルからSQL、パラメータ、結果数はすべてDEBUGレベルであり、具体的なクエリー結果列とデータはTRACEレベルであることがわかります.
     四、まとめ
    この章では、MyBatisについて簡単な認識を持ち、Maven管理を使用したプロジェクトの作成方法を学びました.MyBatisの簡単な構成と使用方法について、井戸は簡単なMyBatisプロジェクトを走らせました.次の章では、MyBatisの構成や一般的な複雑な使い方を深く学び続けます.
    @本シリーズの文章は「Mybatis入門から精通まで」-劉増輝-電子工業出版社-正規版の図書を支持してください.内容は自分で整理してください.権利侵害があれば、伝言を残して削除してください.