mybatisでmapperエージェントメソッドを用いてdaoを開発する

2959 ワード

前言:エージェント開発を理解する前に、元の開発を理解する必要があります.対比を形成してから、その優劣を一反三で発見することができるからだ.ブロガーにはmybatisの原始dao開発方式についてのブログがあります.みんなに助けて欲しいhttps://blog.csdn.net/My_name_is_ZwZ/article/details/82926601
mapperエージェント開発とは?
dao層を開発する方法.
なぜmapperエージェントメソッドを使用してdaoを開発するのですか?
原始的な方法開発daoの弊害を補うために.たとえば:
  • daoインタフェース実装クラスメソッドには大量の重複コードが存在する.
  • sqlSessionメソッドを呼び出すと、satementのidがハードコーディングされます.
  • sqlSessionの方法では,入力されたパラメータがObjectタイプであることが要求されているが,パラメータを間違えた場合,コンパイルはエラーを報告せず,実行時にエラーを報告し,開発効率を低下させ,開発に不利である.

  •  mapperエージェントを使用してdaoを開発するには:
    ほとんどは元のdao開発の手順と同じです.冒頭のブログでは各手順を詳しく紹介しているので、ここでは大まかな手順を書いて、詳しく展開しないでください.
    1.IDEAを使用してmavenプロジェクトを作成します(jarパッケージを手動でインポートすることでmybatisを使用することができます).
     2.srcディレクトリの下にSqlMapConfig.xmlというxmlファイルを作成する
    3.SqlMapConfig.xmlファイルの内容を設定する
     4.テーブルに対応するクラスのマッピングファイルを作成する
        【注意】UserMapper.xmlファイルのnamespaceの内容は書き散らすことができません.定義するmapperインタフェースのアドレスを書かなければなりません.その他は元のdao開発方法と同じです
    
    
    
    
    
       
        
    
    
    5.インタフェースの作成
    【注意1】mapper.javaインタフェースのメソッド名はmapper.xmlのstatementのidと一致する.  以下のとおりです
    public interface Usermapper {
        /**
           findById mapper.xml     id     
    【注意2】mapper.javaインタフェースのメソッド受信パラメータのタイプはparameterTypeのタイプと一致する.以上のように
    【注意3】mapper.javaインタフェースのメソッドが返すパラメータのタイプはresultTypeで示すタイプと一致する.以上のように 
     6.合計プロファイルに、上の表に対応するクラスのマッピングファイルをマッピングする
     7.テスト運転
    public class TestDaiLi {
        public static void main(String[] args) throws IOException {
            //mybatis      
            String resource = "SqlMapConfig.xml";
            //       
            InputStream inputStream =  Resources.getResourceAsStream(resource);
            //      ,  mybatis       
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
            /*      SqlSession*/
            SqlSession sqlSession = sqlSessionFactory.openSession();
            //  dao             dao       
            Usermapper usermapper = sqlSession.getMapper(Usermapper.class);
            
            User user = usermapper.findById(1);
            System.out.println(user.getUserName());
        }
    }
    まとめ:
    mapperエージェントを使用してdaoを開発する過程で、元のdao開発方法と比較して、唯一省略したステップは、インタフェースの実装クラスを作成することです.これにより、コードの読み取りが大幅に向上します.開発が容易
    sqlSessionでは、mapperインタフェースのプロキシオブジェクトを自動的に作成できます.作成したばかりのmapperインタフェースのバイトコードオブジェクトをgetMapperメソッドに渡すだけで、インタフェースに対応するエージェントオブジェクトが得られ、このエージェントオブジェクトを使用してインタフェースの具体的な方法を操作することができます.
        mapperインタフェースのメソッドのパラメータはマッピングファイルのparameterTypeに基づいて指定されるため、parameterTypeは1つしかないので、mapperインタフェースのすべてのメソッドのパラメータは1つしかありません!しかし、包装タイプのpojoを使用して、異なるビジネス方法のニーズを満たすことができます.つまり、パッケージタイプを使用して、必要な複数のパラメータを1つのクラスにパッケージします.