前回の記事「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 }1. 設定ノードはルート ノードです。
2. 構成ノードの下で、プロパティ、typeAliases、プラグイン、objectFactory、objectWrapperFactory、設定、環境、databaseIdProvider、typeHandlers、マッパーの 10 個のサブノードを構成できます。
この記事では、最初にこれらの内容のみを紹介します。次の記事では、これらのノードを解析するときに何が行われるかを確認するために、10 個のノードの中でより重要なノードのソース コードを解析および解析します。
上記は、Mybatis シリーズ (2) の内容です -- 簡単に説明すると、構成の紹介 (mybatis ソース コード) より多くの関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。

Javaは、Java Virtual Machines(JVMS)とBytecodeに依存している「Write and Averywherewherewherewherewherewherewhere」の哲学のために、プラットフォームに依存しません。 1)Javaコードは、JVMによって解釈されるか、地元でその場でコンパイルされたBytecodeにコンパイルされます。 2)ライブラリの依存関係、パフォーマンスの違い、環境構成に注意してください。 3)標準ライブラリを使用して、クロスプラットフォームのテストとバージョン管理がプラットフォームの独立性を確保するためのベストプラクティスです。

java'splatformindepenceisnotsimple; itinvolvescomplexities.1)jvmcompatibilitymustbeensuredacrosplatforms.2)nativeLibrariesandsystemCallSneedCarefulHandling.3)依存症の依存症の依存症と依存症の依存症と依存関係の増加 - プラットフォームのパフォーマンス

java'splatformentedentencebenefitswebapplicationsbyAllowingCodeTorunOnySystemwithajvm、simpledifyifieddeploymentandscaling.itenables:1)easydeploymentddifferentservers、2)Seamlessscalingacroscloudplatforms、および3)deminvermentementmentmentmentmentementtodeploymentpoce

jvmistheruntimeenvironment forexecutingjavabytecode、Curivalforjavaの「writeonce、runanywhere」capability.itmanagesmemory、executessuressecurity、makingestessentionentionalforjavadevadedertionserstunterstanderforeffication devitivationdevation

JavareMainsAtopChoiceFordevelopersDuetoitsPlatformEndepentence、Object-OrientedDesign、stryngting、automaticmemorymanagement、およびcomprehensivestandardlibrary.thesefeaturesmavaversatilatileandpowerful、sustableforawiderangeofplications、daspitesomech

java'splatformentencemeansdeveloperscancancodecodeonceanddevicewithoutrocompilling.cancodecodecodecodecodecodecodecodecodecodecodecode compilling

JVMをセットアップするには、次の手順に従う必要があります。1)JDKをダウンロードしてインストールする、2)環境変数を設定する、3)インストールの確認、4)IDEを設定する、5)ランナープログラムをテストします。 JVMのセットアップは、単に機能するだけでなく、メモリの割り当て、ガベージコレクション、パフォーマンスチューニング、エラー処理の最適化を行い、最適な動作を確保することも含まれます。

toensurejavaplatformindopendence、soflowthesesteps:1)compileandrunyourapplicationOnMultiplePlatformsusingDifferentosAndjvversions.2)utilizeci/cdpipelines


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

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

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。
