Tak perlu dikatakan, manfaat dari pembelajaran kode sumber adalah volume kecil dan sederhana dalam logika, jadi saya akan menulis serangkaian artikel untuk dipelajari.
Sqlsession
Portal Penggunaan Mybatis terletak di SQLSession di paket org.apache.ibatis.Session. Ditemukan bahwa itu adalah antarmuka, dan harus ada kelas implementasi default defaultSQLSession di paket org.apache.iathe.ibatis.session.defaults. Kami tidak pernah baru kelas ini, dan menurut konvensi Java, menggunakan metode pabrik di SQLSessionFactory. Saya menemukan bahwa itu juga antarmuka, jadi harus ada kelas implementasi default defaultSQLSessionFactory. Kelas ini masih tidak perlu dibuat dengan sendirinya, dan menggunakan metode pabrik di SQLSessionFactoryBuilder.
DefaultSQLSession
Metode utama dalam defaultSQLSESSION:
1) Kursor <T> SelectCursor (Pernyataan String, Parameter Objek, Rowbounds Rowbounds), didelegasikan ke Executor.QueryCursor (MS, WrapCollection (parameter), Rowbounds).
2) Daftar <E> SelectList (Pernyataan String, Parameter Objek, Rowbounds Rowbounds) dan Void Select (Pernyataan String, Parameter Objek, Rowbounds Rowbounds, Resulthandler Handler), dan Delegasi ke Executor.Query (MS, WrapCollection (parameter), Rowbounds, Handler).
3) Pembaruan int (Pernyataan String, Parameter Objek), Delegasi ke Executor.update (MS, WrapCollection (parameter)).
Dapat dilihat bahwa ada pelaksana untuk menyelesaikannya pada akhirnya.
Pelaksana
Executor terletak di paket org.apache.ibatis.executor. Itu adalah antarmuka. Kelas implementasi adalah Baseexecutor dan CachingExecutor. Di antara mereka, Baseexecutor abstrak dan memiliki tiga subclasses SimpleExecutor, Reuseexecutor dan Batchexecutor. Lihat namanya dan ketahui artinya. Metode utama di Baseexecutor:
1) Daftar <E> kueri (Mappedstatement MS, Parameter Objek, Rowbounds Rowbounds, Resulthandler Resulthandler, CacheKey Key, BoundSQL BoundSQL) dan Daftar <E> QueryFromDatabase, Parameter Delelegasi, Rowbound Rowbounds, Resulthandler, Rowbound Rowbounds, Resulthandler, MappedStateMent, Parameter Objek, Rowbound Rowbounds, Resulthandler, MappedStateMent, Parameter Objek, Rowbound Rowbounds, Resulthandler, MappedStateMent MS, Rowbounds Rowbounds, Resulthandler Abstrak <E> Daftar <E> DOQUERY (MappedStatement MS, Parameter Objek, Rowbounds Rowbounds, Resulthandler Resulthandler, BoundSQL BoundSQL).
2) Kursor <E> QueryCursor (Mappedstatement MS, Parameter Objek, Rowbounds Rowbounds), didelegasikan ke abstrak <e> kursor <E> doqueryCursor (MappedStatement MS, Parameter Objek, Rowbounds Rowbounds, BoundSQL BoundSQL).
3) Pembaruan int (MappedStatement MS, Parameter Objek), Delegasi ke Abstrak Int DoupDate (MappedStatement MS, Parameter Objek).
Kelas dasar memproses bagian publik, menyerahkannya pada implementasi subkelas.
Mari kita lihat metode utama di SimpleExecutor:
1) Daftar <E> DOQUERY (MappedStatement MS, Parameter Objek, Rowbounds Rowbounds, Resulthandler Resulthandler, BoundSQL BoundSQL), didelegasikan ke handler. <e> kueri (stmt, resulthandler).
2) Kursor <E> doqueryCursor (MappedStatement MS, Parameter Objek, Rowbounds Rowbounds, BoundSQL BoundSQL), dipercayakan kepada Handler. <e> QueryCursor (STMT).
3) int doupDate (MappedStatement MS, Parameter Objek), Delegasi ke Handler.update (STMT).
Dapat dilihat bahwa akhirnya ditangani oleh pawang.
Pernyataanhandler
Pernyataan Tulisan terletak di paket org.apache.ibatis.executor.Statement. Itu adalah antarmuka. Kelas implementasi adalah Basestatementhandler dan RoutingStatementHandler. BasestatementHandler abstrak dan memiliki tiga subclass SimpleStatementhandler, PrepiedStatementHandler dan CallablestAtementHandler. Ketiganya harus terbiasa dengan, dan mereka harus menangani pernyataan SQL tanpa parameter, pernyataan SQL yang parameter dan prosedur tersimpan masing -masing. Mari kita lihat metode utama di SimpleTatementHandler:
1) Daftar <E> kueri (pernyataan pernyataan, resulthandler resulthandler), delegasi ke pernyataan.execute (SQL).
2) Kursor <E> QueryCursor (pernyataan pernyataan), Delegasi ke pernyataan.Execute (SQL).
3) Pembaruan int (Pernyataan Pernyataan), Delegasi ke pernyataan.Execute (SQL).
Akhirnya, SQL dieksekusi dengan pernyataan. Ini kembali ke paket java.sql.
Mybatis terutama menyelesaikan pemrosesan enkapsulasi parameter SQL, memperoleh hasil yang ditetapkan dan menghasilkan objek, dan meninggalkan proses konstruksi pernyataan SQL kepada pengguna. Penulis Mybatis merancang dengan cara ini. Meskipun kerangka kerja semi-otomatis secara keseluruhan, fleksibilitasnya telah sangat meningkat.