Mybatisシリーズ徹底入門(2) --- 構成紹介(mybatisソースコード)
前回の記事「Mybatisシリーズ徹底紹介(1)---Mybatis入門」では、Mybatisのプロセスを簡単に紹介するデモを書きました。今回は、Mybatis の構成ファイルを簡単に紹介します。
最後の例では、SqlSessionFactoryBuilder を使用して SqlSessionFactory を作成しました。次に、SqlSessionFactoryBuilder がどのように実装されているかを見てみましょう。 SqlSessionFactoryBuilder ソース コード スニペット :
1 public class SqlSessionFactoryBuilder { 2 3 //Reader读取mybatis配置文件,传入构造方法 4 //除了Reader外,其实还有对应的inputStream作为参数的构造方法, 5 //这也体现了mybatis配置的灵活性 6 public SqlSessionFactory build(Reader reader) { 7 return build(reader, null, null); 8 } 9 10 public SqlSessionFactory build(Reader reader, String environment) { 11 return build(reader, environment, null); 12 } 13 14 //mybatis配置文件 + properties, 此时mybatis配置文件中可以不配置properties,也能使用${}形式 15 public SqlSessionFactory build(Reader reader, Properties properties) { 16 return build(reader, null, properties); 17 } 18 19 //通过XMLConfigBuilder解析mybatis配置,然后创建SqlSessionFactory对象 20 public SqlSessionFactory build(Reader reader, String environment, Properties properties) { 21 try { 22 XMLConfigBuilder parser = new XMLConfigBuilder(reader, environment, properties); 23 //下面看看这个方法的源码 24 return build(parser.parse()); 25 } catch (Exception e) { 26 throw ExceptionFactory.wrapException("Error building SqlSession.", e); 27 } finally { 28 ErrorContext.instance().reset(); 29 try { 30 reader.close(); 31 } catch (IOException e) { 32 // Intentionally ignore. Prefer previous error. 33 } 34 } 35 } 36 37 public SqlSessionFactory build(Configuration config) { 38 return new DefaultSqlSessionFactory(config); 39 } 40 41 }
1 /** 2 * mybatis 配置文件解析 3 */ 4 public class XMLConfigBuilder extends BaseBuilder { 5 public XMLConfigBuilder(InputStream inputStream, String environment, Properties props) { 6 this(new XPathParser(inputStream, true, props, new XMLMapperEntityResolver()), environment, props); 7 } 8 9 private XMLConfigBuilder(XPathParser parser, String environment, Properties props) { 10 super(new Configuration()); 11 ErrorContext.instance().resource("SQL Mapper Configuration"); 12 this.configuration.setVariables(props); 13 this.parsed = false; 14 this.environment = environment; 15 this.parser = parser; 16 } 17 18 //外部调用此方法对mybatis配置文件进行解析 19 public Configuration parse() { 20 if (parsed) { 21 throw new BuilderException("Each XMLConfigBuilder can only be used once."); 22 } 23 parsed = true; 24 //从根节点configuration 25 parseConfiguration(parser.evalNode("/configuration")); 26 return configuration; 27 } 28 29 //此方法就是解析configuration节点下的子节点 30 //由此也可看出,我们在configuration下面能配置的节点为以下10个节点 31 private void parseConfiguration(XNode root) { 32 try { 33 propertiesElement(root.evalNode("properties")); //issue #117 read properties first 34 typeAliasesElement(root.evalNode("typeAliases")); 35 pluginElement(root.evalNode("plugins")); 36 objectFactoryElement(root.evalNode("objectFactory")); 37 objectWrapperFactoryElement(root.evalNode("objectWrapperFactory")); 38 settingsElement(root.evalNode("settings")); 39 environmentsElement(root.evalNode("environments")); // read it after objectFactory and objectWrapperFactory issue #631 40 databaseIdProviderElement(root.evalNode("databaseIdProvider")); 41 typeHandlerElement(root.evalNode("typeHandlers")); 42 mapperElement(root.evalNode("mappers")); 43 } catch (Exception e) { 44 throw new BuilderException("Error parsing SQL Mapper Configuration. Cause: " + e, e); 45 } 46 } 47 }
2. 構成ノードの下で、プロパティ、typeAliases、プラグイン、objectFactory、objectWrapperFactory、設定、環境、databaseIdProvider、typeHandlers、マッパーの 10 個のサブノードを構成できます。
この記事では、最初にこれらの内容のみを紹介します。次の記事では、これらのノードを解析するときに何が行われるかを確認するために、10 個のノードの中でより重要なノードのソース コードを解析および解析します。
上記は、Mybatis シリーズ (2) の内容です -- 簡単に説明すると、構成の紹介 (mybatis ソース コード) より多くの関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











iBatis と MyBatis: どちらを選択するべきですか?はじめに: Java 言語の急速な発展に伴い、多くの永続化フレームワークが登場しました。 iBatis と MyBatis は 2 つの人気のある永続化フレームワークであり、どちらもシンプルで効率的なデータ アクセス ソリューションを提供します。この記事では、iBatis と MyBatis の機能と利点を紹介し、適切なフレームワークを選択するのに役立つ具体的なコード例をいくつか示します。 iBatis の紹介: iBatis はオープンソースの永続化フレームワークです。

JPA と MyBatis: 機能とパフォーマンスの比較分析 はじめに: Java 開発では、永続化フレームワークが非常に重要な役割を果たします。一般的な永続化フレームワークには、JPA (JavaPersistenceAPI) や MyBatis などがあります。この記事では、2 つのフレームワークの機能とパフォーマンスを比較分析し、具体的なコード例を示します。 1. 機能の比較: JPA: JPA は JavaEE の一部であり、オブジェクト指向のデータ永続化ソリューションを提供します。アノテーションまたはXが渡されます

MyBatis 動的 SQL タグの解釈: Set タグの使用法の詳細な説明 MyBatis は、豊富な動的 SQL タグを提供し、データベース操作ステートメントを柔軟に構築できる優れた永続層フレームワークです。このうち、Set タグは、UPDATE ステートメントで SET 句を生成するために使用され、更新操作でよく使用されます。この記事では、MyBatis での Set タグの使用法を詳細に説明し、特定のコード例を通じてその機能を示します。 SetタグとはMyBatiで使用するSetタグです。

MyBatis でバッチ削除ステートメントを実装するいくつかの方法には、特定のコード例が必要です。近年、データ量の増加により、バッチ操作がデータベース操作の重要な部分になっています。実際の開発では、データベース内のレコードを一括で削除する必要が生じることがよくあります。この記事では、MyBatis でバッチ削除ステートメントを実装するいくつかの方法に焦点を当て、対応するコード例を示します。 foreach タグを使用してバッチ削除を実装します。MyBatis は、セットを簡単に横断できる foreach タグを提供します。

MyBatis バッチ削除ステートメントの使用方法の詳細な説明には、特定のコード例が必要です はじめに: MyBatis は、豊富な SQL 操作機能を提供する優れた永続層フレームワークです。実際のプロジェクト開発では、データを一括で削除する必要がある場面に遭遇することがよくあります。この記事では、MyBatis のバッチ削除ステートメントの使用方法を詳しく紹介し、具体的なコード例を添付します。使用シナリオ: データベース内の大量のデータを削除する場合、削除ステートメントを 1 つずつ実行するのは非効率です。このとき、MyBatisの一括削除機能が利用できます。

MyBatis キャッシュ メカニズムの詳細な説明: キャッシュ ストレージの原理を理解するための 1 つの記事 はじめに MyBatis をデータベース アクセスに使用する場合、キャッシュは非常に重要なメカニズムであり、データベースへのアクセスを効果的に削減し、システム パフォーマンスを向上させることができます。この記事では、キャッシュの分類、ストレージの原則、具体的なコード例など、MyBatis のキャッシュ メカニズムを詳しく紹介します。 1. キャッシュの分類 MyBatis のキャッシュは、主に 1 次キャッシュと 2 次キャッシュの 2 種類に分かれます。 1 次キャッシュは SqlSession レベルのキャッシュです。

iBatis と MyBatis は 2 つの主流の ORM (オブジェクト リレーショナル マッピング) フレームワークであり、設計と使用において多くの類似点がありますが、微妙な違いもいくつかあります。この記事では、iBatis と MyBatis の類似点と相違点を詳細に比較し、具体的なコード例を通じてその特徴を説明します。 1. iBatis と MyBatis の歴史と背景 iBatis は Apache Software Foundat です

MyBatisGenerator は、MyBatis が公式に提供するコード生成ツールで、開発者がデータベース テーブル構造に準拠した JavaBeans、Mapper インターフェイス、および XML マッピング ファイルを迅速に生成するのに役立ちます。コード生成に MyBatisGenerator を使用するプロセスでは、構成パラメーターの設定が重要です。この記事では、構成パラメータの観点から開始し、MyBatisGenerator の機能を詳しく説明します。
