Heim Backend-Entwicklung XML/RSS-Tutorial Detailliertes Beispiel der XML-Zuordnungskonfigurationsdatei von My Batis

Detailliertes Beispiel der XML-Zuordnungskonfigurationsdatei von My Batis

Apr 24, 2017 am 09:33 AM

[java] view plain copy

<span style="font-size:14px;">  My Batis 支持SQL查询,是一些高级映射在持久层的完美展示。他更多的使用简单的XML或注解用于配置和原始映射,<span style="color: rgb(54, 54, 54); font-family: &#39;Helvetica Neue&#39;, Helvetica, Arial, sans-serif; line-height: 24px; ">摒除了大量的JDBC代码、手工设置参数和结果集封装,提高了开发效率。</span></span>
Nach dem Login kopieren

Die XML-Konfigurationsdatei von MyBatis enthält Einstellungen und Attributinformationen, die das Verhalten von MyBatis tiefgreifend beeinflussen. Die übergeordnete Struktur des XML-Dokuments lautet wie folgt:

Konfigurationskonfiguration

Umgebungsumgebungsvariablen

transactionManager-Transaktionsmanager

dataSource-Daten Quelle

Eigenschaften

Einstellungen

TypeAliases Typbenennung

TypeHandlers Typprozessor

ObjectFactory Objektfabrik

Plugins

Umgebungen

Mapper

Im Folgenden finden Sie eine detaillierte Einführung in jede Eigenschaftskonfiguration

Eigenschaften
Dies sind externalisierte und ersetzbare Eigenschaften, die auch sein können in einer typischen Java-Eigenschaftenkonfigurationsdatei konfiguriert oder über untergeordnete Elemente des Eigenschaftenelements übergeben.

<如> Zum Beispiel:

[html] view plain copy
<properties resource="jdbc_mysql.properties" />  
[html] view plain copy
<dataSource type="POOLED">  
[html] view plain copy
<property name="driver" value="${driver}"/>  
[html] view plain copy
<property name="url" value="${url}"/>  
[html] view plain copy
<property name="username" value="${username}"/>  
[html] view plain copy
<property name="password" value="${password}"/>  
[html] view plain copy
</dataSource>
Nach dem Login kopieren
Benutzername und Passwort werden in diesem Beispiel durch die im Properties-Element festgelegten Werte ersetzt. Die Treiber- und URL-Eigenschaften werden durch Werte aus der enthaltenen Datei jdbc_mysql.properties ersetzt.

Einstellungen

Dies sind äußerst wichtige Anpassungen, die das Verhalten von MyBatis zur Laufzeit ändern. In der folgenden Tabelle werden die Einstellungsinformationen, ihre Bedeutung und Standardwerte beschrieben.

Parameter einstellen                                                          acheEnabled Diese Konfiguration aktiviert oder deaktiviert den Cache global für den Mapper.

lazyLoadingEnabled Aktiviert oder deaktiviert das verzögerte Laden global. Wenn diese Option deaktiviert ist, werden alle zugehörigen Objekte im laufenden Betrieb geladen.

aggressiveLazyLoading Wenn diese Option aktiviert ist, laden Objekte mit Lazy-Loading-Eigenschaften beim Aufruf alle Eigenschaften vollständig. Andernfalls wird jede Eigenschaft nach Bedarf geladen.

multipleResultSetsEnabled Ermöglicht oder verbietet die Rückgabe mehrerer Ergebnismengen aus einer einzelnen Anweisung (entsprechender Treiber erforderlich).

useColumnLabel Verwenden Sie Spaltenbezeichnungen anstelle von Spaltennamen. Hier verhalten sich verschiedene Treiber unterschiedlich. Sehen Sie sich die Treiberdokumentation an oder führen Sie gründliche Tests durch, um zu bestimmen, welcher Treiber verwendet werden soll.

useGeneratedKeys Ermöglicht JDBC die Unterstützung generierter Schlüssel. Ein geeigneter Treiber ist erforderlich. Wenn diese Einstellung auf „true“ gesetzt ist, erzwingt diese Einstellung die Verwendung der generierten Schlüssel, obwohl einige Treiber die Kompatibilität verweigern, aber trotzdem funktionieren (z. B. Derby).

autoMappingBehavior Gibt an, wie MyBatis Spalten automatisch Feldern/Eigenschaften zuordnet. PARTIAL ordnet nur einfache, keine verschachtelten Ergebnisse automatisch zu. FULL ordnet automatisch beliebig komplexe Ergebnisse (verschachtelt oder nicht) zu.

defaultExecutorType Konfigurieren Sie den Standard-Executor. Der SIMPLE-Aktuator ist nichts Besonderes. Der REUSE-Executor verwendet vorbereitete Anweisungen wieder. Der BATCH-Executor verwendet Anweisungen und Batch-Aktualisierungen wieder.

defaultStatementTimeout Legen Sie das Timeout fest, das bestimmt, wie lange der Treiber auf eine Datenbankantwort wartet.

Ein Beispiel für das Festlegen von Informationselementen ist wie folgt:

typeAliases

<settings>
<setting name="cacheEnabled" value="true"/>
<setting name="lazyLoadingEnabled" value="true"/>
<setting name="multipleResultSetsEnabled" value="true"/>
<setting name="useColumnLabel" value="true"/>
<setting name="useGeneratedKeys" value="false"/>
<setting name="enhancementEnabled" value="false"/>
<setting name="defaultExecutorType" value="SIMPLE"/>
<setting name="defaultStatementTimeout" value="25000"/>
</settings>
Nach dem Login kopieren

Typaliase sind Kurznamen für Java-Typen. Es ist nur für die XML-Konfiguration relevant und wird nur verwendet, um den redundanten Teil des vollständig qualifizierten Klassennamens zu reduzieren. Beispiel:

Mit dieser Konfiguration kann „Blog“ überall dort verwendet werden, wo „domain.blog.Blog“ verwendet wird.

[html] view plain copy
<typeAliases>  
[html] view plain copy
<typeAlias alias="Author" type="domain.blog.Author"/>  
[html] view plain copy
<typeAlias alias="Blog" type="domain.blog.Blog"/>  
[html] view plain copy
<typeAlias alias="Comment" type="domain.blog.Comment"/>  
[html] view plain copy
<typeAlias alias="Post" type="domain.blog.Post"/>  
[html] view plain copy
<typeAlias alias="Section" type="domain.blog.Section"/>  
[html] view plain copy
<typeAlias alias="Tag" type="domain.blog.Tag"/>  
[html] view plain copy
</typeAliases>
Nach dem Login kopieren
typeHandlers

Unabhängig davon, ob MyBatis einen Parameter in einer vorbereiteten Anweisung festlegt oder einen Wert aus der Ergebnismenge abruft, wird der Typhandler verwendet, um den erhaltenen Wert auf geeignete Weise in einen Java-Typ zu konvertieren. In der folgenden Liste werden die Standardtyphandler beschrieben. Der Reihe nach Typhandler Java-Typ JDBC-Typ

BooleanTypeHandler Boolean, boolean Jeder kompatible boolesche Wert

ByteTypeHandler Byte, Byte Jede kompatible Zahl oder jeder kompatible Bytetyp

ShortTypeHandler              Short , short                                                                                                                                                                                               Jeder kompatible Zahl oder lang

FloatTypeHandler Float,float 任何兼容的数字或单精度浮点型

DoubleTypeHandler Double,double 任何兼容的数字或双精度浮点型

BigDecimalTypeHandler BigDecimal 任何兼容的数字或十进制小数类型

StringTypeHandler String CHAR和VARCHAR类型

ClobTypeHandler String CLOB和LONGVARCHAR类型

NStringTypeHandler String NVARCHAR和NCHAR类型

NClobTypeHandler String NCLOB类型

ByteArrayTypeHandler byte[] 任何兼容的字节流类型

BlobTypeHandler byte[] BLOB和LONGVARBINARY类型

DateTypeHandler Date(java.util) TIMESTAMP类型

DateOnlyTypeHandler Date(java.util) DATE类型

TimeOnlyTypeHandler Date(java.util) TIME类型

SqlTimestampTypeHandler Timestamp(java.sql) TIMESTAMP类型

SqlDateTypeHandler Date(java.sql) DATE类型

SqlTimeTypeHandler Time(java.sql) TIME类型

ObjectTypeHandler Any 其他或未指定类型

EnumTypeHandler Enumeration类型 VARCHAR-任何兼容的字符串类型,作为代码存储(而不是索引)。

objectFactory
MyBatis每次创建结果对象新的实例时,它使用一个ObjectFactory实例来完成。如果参数映射存在,默认的ObjectFactory不比使用默认构造方法或带参数的构造方法实例化目标类做的工作多。

plugins
MyBatis允许你在某一点拦截已映射语句执行的调用。默认情况下,MyBatis允许使用插件来拦截方法调用:

Executor
            (update, query, flushStatements, commit, rollback, getTransaction, close, isClosed)
 ParameterHandler
            (getParameterObject, setParameters)
 ResultSetHandler
          (handleResultSets, handleOutputParameters)
 StatementHandler
Nach dem Login kopieren

(prepare, parameterize, batch, update, query)
这些类中方法的详情可以通过查看每个方法的签名来发现,而且它们的源代码在MyBatis的发行包中有。你应该理解你覆盖方法的行为,假设你所做的要比监视调用要多。如果你尝试修改或覆盖一个给定的方法,你可能会打破MyBatis的核心。这是低层次的类和方法,要谨慎使用插件。

使用插件是它们提供的非常简单的力量。简单实现拦截器接口,要确定你想拦截的指定签名。

java代码:

[javascript] view plain copy
@Intercepts({@Signature(type= Executor.class,method = "update",  
[javascript] view plain copy
args = {MappedStatement.class,Object.class})})  
[javascript] view plain copy
public class ExamplePlugin implements Interceptor {  
[javascript] view plain copy
public Object intercept(Invocation invocation) throws Throwable  
[javascript] view plain copy
{  
[javascript] view plain copy
return invocation.proceed();  
[javascript] view plain copy
}  
[javascript] view plain copy
public Object plugin(Object target) {  
[javascript] view plain copy
return Plugin.wrap(target, this);  
[javascript] view plain copy
}  
[javascript] view plain copy
public void setProperties(Properties properties) {  
[javascript] view plain copy
}  
[html] view plain copy
MapperConfig.xml  
[html] view plain copy
<plugins>  
[html] view plain copy
<plugin interceptor="org.mybatis.example.ExamplePlugin">  
[html] view plain copy
<property name="someProperty" value="100"/>  
[html] view plain copy
</plugin>  
[html] view plain copy
</plugins>  
[html] view plain copy
Nach dem Login kopieren

上面的插件将会拦截在Executor实例中所有的“update”方法调用,它也是负责低层次映射语句执行的内部对象。

environments

[html] view plain copy
<environments default="development">  
        <environment id="development">  
            <transactionManager type="JDBC" />  
            <dataSource type="POOLED">  
                <property name="driver" value="${jdbc.driver}" />  
                <property name="url" value="${jdbc.url}"/>  
                <property name="username" value="${jdbc.user}" />  
                <property name="password" value="${jdbc.password}" />  
                                <property name="poolPingEnabled" value="true"/>  
                <property name="poolPingQuery" value="SELECT * FROM app_setup_setting WHERE name=&#39;allow_setup_unknown_app&#39;" />  
                        <property name="poolPingConnectionsNotUsedFor" value="7200000"/>   
            </dataSource>  
        </environment>  
    </environments>  
dataSsource
Nach dem Login kopieren

dataSource元素使用基本的JDBC数据源接口来配置JDBC连接对象的资源。见上
transactionManager

在MyBatis中有两种事务管理器类型(也就是type=”[JDBC|MANAGED]”):
1.JDBC – 这个配置直接简单使用了JDBC的提交和回滚设置。它依赖于从数据源得到的连接来管理事务范围。
2.MANAGED – 这个配置几乎没做什么。它从来不提交或回滚一个连接。而它会让容器来管理事务的整个生命周期(比如Spring或JEE应用服务器的上下文)。默认情况下它会关闭连接。然而一些容器并不希望这样,因此如果你需要从连接中停止它,将closeConnection属性设置为false。例如:

[html] view plain copy
<transactionManager type="MANAGED">  
<property name="closeConnection" value="false"/>  
</transactionManager>
Nach dem Login kopieren

这两种事务管理器都不需要任何属性。然而它们都是类型别名,要替换使用它们,你需要放置将你自己的类的完全限定名或类型别名,它们引用了你对TransacFactory接口的实现类。
public interface TransactionFactory {
void setProperties(Properties props);
Transaction newTransaction(Connection conn, boolean autoCommit);
}
任何在XML中配置的属性在实例化之后将会被传递给setProperties()方法。你的实现类需要创建一个事务接口的实现,这个接口也很简单:

[html] view plain copy
public interface Transaction {  
Connection getConnection();  
void commit() throws SQLException;  
void rollback() throws SQLException;  
void close() throws SQLException;  
}
Nach dem Login kopieren

使用这两个接口,你可以完全自定义MyBatis对事务的处理。

mappers

既然MyBatis的行为已经由上述元素配置完了,我们现在就要定义SQL映射语句了。但是,首先我们需要告诉MyBatis到哪里去找到这些语句。Java在这方面没有提供一个很好的方法,所以最佳的方式是告诉MyBatis到哪里去找映射文件。你可以使用相对于类路径的资源引用,或者字符表示,或url引用的完全限定名(包括file:///URLs)。例如:

[html] view plain copy
// Using classpath relative resources(首选)  
<mappers>  
<mapper resource="org/mybatis/builder/AuthorMapper.xml"/>  
<mapper resource="org/mybatis/builder/BlogMapper.xml"/>  
<mapper resource="org/mybatis/builder/PostMapper.xml"/>  
</mappers>  
// Using url fully qualified paths  
<mappers>  
<mapper url="file:///var/sqlmaps/AuthorMapper.xml"/>  
<mapper url="file:///var/sqlmaps/BlogMapper.xml"/>  
<mapper url="file:///var/sqlmaps/PostMapper.xml"/>  
</mappers>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonDetailliertes Beispiel der XML-Zuordnungskonfigurationsdatei von My Batis. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Kann ich eine XML-Datei mit PowerPoint öffnen? Kann ich eine XML-Datei mit PowerPoint öffnen? Feb 19, 2024 pm 09:06 PM

Können XML-Dateien mit PPT geöffnet werden? XML, Extensible Markup Language (Extensible Markup Language), ist eine universelle Auszeichnungssprache, die häufig im Datenaustausch und in der Datenspeicherung verwendet wird. Im Vergleich zu HTML ist XML flexibler und kann eigene Tags und Datenstrukturen definieren, wodurch die Speicherung und der Austausch von Daten komfortabler und einheitlicher werden. PPT oder PowerPoint ist eine von Microsoft entwickelte Software zum Erstellen von Präsentationen. Es bietet eine umfassende Möglichkeit

XML-Daten mit Python filtern und sortieren XML-Daten mit Python filtern und sortieren Aug 07, 2023 pm 04:17 PM

Implementieren des Filterns und Sortierens von XML-Daten mit Python Einführung: XML ist ein häufig verwendetes Datenaustauschformat, das Daten in Form von Tags und Attributen speichert. Bei der Verarbeitung von XML-Daten müssen wir die Daten häufig filtern und sortieren. Python bietet viele nützliche Tools und Bibliotheken zum Verarbeiten von XML-Daten. In diesem Artikel wird erläutert, wie Sie mit Python XML-Daten filtern und sortieren. Lesen der XML-Datei Bevor wir beginnen, müssen wir die XML-Datei lesen. Python verfügt über viele XML-Verarbeitungsbibliotheken.

Verwendung von Python zum Zusammenführen und Deduplizieren von XML-Daten Verwendung von Python zum Zusammenführen und Deduplizieren von XML-Daten Aug 07, 2023 am 11:33 AM

Verwenden von Python zum Zusammenführen und Deduplizieren von XML-Daten XML (eXtensibleMarkupLanguage) ist eine Auszeichnungssprache, die zum Speichern und Übertragen von Daten verwendet wird. Bei der Verarbeitung von XML-Daten müssen wir manchmal mehrere XML-Dateien zu einer zusammenführen oder doppelte Daten entfernen. In diesem Artikel wird erläutert, wie Sie mit Python die Zusammenführung und Deduplizierung von XML-Daten implementieren und entsprechende Codebeispiele angeben. 1. XML-Daten zusammenführen Wenn wir mehrere XML-Dateien haben, müssen wir sie zusammenführen

Konvertieren Sie XML-Daten in Python in das CSV-Format Konvertieren Sie XML-Daten in Python in das CSV-Format Aug 11, 2023 pm 07:41 PM

Konvertieren Sie XML-Daten in Python in das CSV-Format. XML (ExtensibleMarkupLanguage) ist eine erweiterbare Auszeichnungssprache, die häufig zur Datenspeicherung und -übertragung verwendet wird. CSV (CommaSeparatedValues) ist ein durch Kommas getrenntes Textdateiformat, das häufig für den Datenimport und -export verwendet wird. Bei der Datenverarbeitung ist es manchmal erforderlich, XML-Daten zur einfachen Analyse und Verarbeitung in das CSV-Format zu konvertieren. Python ist mächtig

Importieren Sie XML-Daten mit PHP in die Datenbank Importieren Sie XML-Daten mit PHP in die Datenbank Aug 07, 2023 am 09:58 AM

Importieren von XML-Daten in die Datenbank mit PHP Einführung: Während der Entwicklung müssen wir häufig externe Daten zur weiteren Verarbeitung und Analyse in die Datenbank importieren. Als häufig verwendetes Datenaustauschformat wird XML häufig zum Speichern und Übertragen strukturierter Daten verwendet. In diesem Artikel wird erläutert, wie Sie mit PHP XML-Daten in eine Datenbank importieren. Schritt 1: XML-Datei analysieren Zuerst müssen wir die XML-Datei analysieren und die erforderlichen Daten extrahieren. PHP bietet mehrere Möglichkeiten zum Parsen von XML. Die am häufigsten verwendete davon ist die Verwendung von Simple

Python implementiert die Konvertierung zwischen XML und JSON Python implementiert die Konvertierung zwischen XML und JSON Aug 07, 2023 pm 07:10 PM

Python implementiert die Konvertierung zwischen XML und JSON. Einführung: Im täglichen Entwicklungsprozess müssen wir häufig Daten zwischen verschiedenen Formaten konvertieren. XML und JSON sind gängige Datenaustauschformate. In Python können wir verschiedene Bibliotheken zum Konvertieren zwischen XML und JSON verwenden. In diesem Artikel werden mehrere häufig verwendete Methoden mit Codebeispielen vorgestellt. 1. Um XML in Python in JSON zu konvertieren, können wir das Modul xml.etree.ElementTree verwenden

Behandeln von Fehlern und Ausnahmen in XML mit Python Behandeln von Fehlern und Ausnahmen in XML mit Python Aug 08, 2023 pm 12:25 PM

Behandeln von Fehlern und Ausnahmen in XML mit Python XML ist ein häufig verwendetes Datenformat zum Speichern und Darstellen strukturierter Daten. Wenn wir Python zum Verarbeiten von XML verwenden, können manchmal Fehler und Ausnahmen auftreten. In diesem Artikel werde ich die Verwendung von Python zur Behandlung von Fehlern und Ausnahmen in XML vorstellen und einige Beispielcodes als Referenz bereitstellen. Verwenden Sie Try-Exception-Anweisungen, um XML-Parsing-Fehler abzufangen. Wenn wir Python zum Parsen von XML verwenden, können manchmal Fehler auftreten

Python analysiert Sonderzeichen und Escape-Sequenzen in XML Python analysiert Sonderzeichen und Escape-Sequenzen in XML Aug 08, 2023 pm 12:46 PM

Python analysiert Sonderzeichen und Escape-Sequenzen in XML. XML (eXtensibleMarkupLanguage) ist ein häufig verwendetes Datenaustauschformat, das zum Übertragen und Speichern von Daten zwischen verschiedenen Systemen verwendet wird. Bei der Verarbeitung von XML-Dateien kommt es häufig vor, dass Sonderzeichen und Escape-Sequenzen enthalten sind, die zu Analysefehlern oder einer Fehlinterpretation der Daten führen können. Daher müssen wir beim Parsen von XML-Dateien mit Python verstehen, wie mit diesen Sonderzeichen und Escape-Sequenzen umgegangen wird. 1. Sonderzeichen und

See all articles