Explication détaillée du fichier de configuration globale MyBatis

Fichier de configuration globale MyBatis

Le fichier de configuration de MyBatis contient des informations sur les paramètres et les propriétés qui affectent profondément le comportement de MyBatis. Document

La structure de niveau supérieur est la suivante:

configuration

• Propriétés

• Les paramètres

• typeAliases type de dénomination

• gestionnaire de type typeHandlers

• fabrique d'objets objectFactory

• plugins

• environnements

• variables d'environnement d'environnement

• gestionnaire de transactions transactionManager

• source de données dataSource

• ID du fournisseur de la base de données databaseIdProvider

• mappeurs

Propriétés

mybatis peut utiliser des propriétés pour introduire le contenu des fichiers de configuration des propriétés externes

resource: introduisez des ressources sous le classpath

url: introduisez des ressources sous le chemin réseau ou le chemin du disque

<properties resource="dbconfig.properties"></properties>

Si les propriétés sont configurées à plusieurs endroits, MyBatis sera chargé dans l'ordre suivant:

- Les propriétés spécifiées dans le corps de l'élément properties sont lues en premier.

- Ensuite, lisez le fichier de propriétés sous le chemin de classe selon l'attribut de ressource dans l'élément de propriétés ou lisez le fichier de propriétés selon le chemin spécifié par l'attribut url, et écrasez l'attribut de lecture avec le même nom. - Enfin, lisez l'attribut passé comme paramètre de méthode et écrasez l'attribut read avec le même nom.

Les paramètres

Ce sont des paramètres de réglage extrêmement importants dans MyBatis, et ils modifieront le comportement d'exécution de MyBatis.

le réglage contient de nombreux éléments de réglage importants

réglage: utilisé pour régler chaque élément de réglage

nom: définir le nom de l'élément

valeur: la valeur de l'élément de réglage

mapUnderscoreToCamelCase: CamelCase nommé last_name -> lastName

    <settings>
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>

typeAliases type de dénomination

typeAliases: vous pouvez définir des alias pour chaque classe sous ce package par lots

Les alias ne sont pas sensibles à la casse

Créez un alias par défaut, qui est un nom de classe simple en minuscules

typeAlias: alias un type java

type: spécifiez le nom de classe complet du type à aliaser; l'alias par défaut est la minuscule du nom de classe: employé

alias: spécifiez un nouvel alias

package: alias de lot pour toutes les classes sous un certain package

name: spécifiez le nom du package (un alias par défaut (nom de classe en minuscule) pour chaque classe sous le package actuel et tous les packages descendants ci-dessous)

Problèmes existants:

Supposons qu'il y ait une classe Employee sous le package de bean, et qu'il y ait un sous-package sous le package de bean et une classe appelée Employee. À ce stade, les noms de classe des deux packages entreront en conflit, vous pouvez donc également utiliser des annotations pour créer des alias pour la classe

 @Alias("")

Employé de classe publique {}

Il est à noter que MyBatis a des alias de type correspondants intégrés pour de nombreux types Java courants. Ils sont tous insensibles à la casse et nous ne devons pas utiliser les alias existants lors de la création d'alias.

environnements

Mybatis peut être configuré avec une variété d'environnements. La valeur par défaut spécifie l'utilisation d'un certain environnement, ce qui peut permettre une commutation rapide.

environnements: configurez une information d'environnement spécifique; il doit y avoir deux balises, id représente l'identifiant unique de l'environnement actuel

transactionManager gestionnaire de transactions

type: Le type de gestionnaire de transactions [JDBC (en utilisant les paramètres de validation et d'annulation de JDBC, dépend de la connexion obtenue à partir de la source de données pour gérer la portée de la transaction.) | GÉRÉ (ne pas valider ou annuler une connexion, laissez le conteneur gère la transaction L'ensemble du cycle de vie (comme le contexte du serveur d'application JEE)]

JDBC: JdbcTransactionFactory

Un gestionnaire de transactions personnalisé peut implémenter l'interface TransactionFactory

source de données dataSource

type: Le type de source de données [UNPOOLED (Ne pas utiliser le pool de connexions) | POOLED (Utiliser le pool de connexions) | JNDI (Rechercher la source de données spécifiée dans des conteneurs tels que EJB ou serveur d'applications)]

La source de données personnalisée implémente l'interface DataSourceFactory

Dans le développement réel, nous utilisons Spring pour gérer la source de données et configurer le contrôle de transaction pour couvrir la configuration ci-dessus

ID du fournisseur de base de données databaseIdProvider

databaseIdProvider: Différentes instructions peuvent être exécutées selon différents fournisseurs de bases de données.

type: type de base de données DB_VENDOR

La fonction est d'obtenir l'identification du fournisseur de la base de données (le pilote est livré avec), mybatis peut exécuter différents SQL en fonction de l'identification du fournisseur de la base de données

MYSQL Oracle SQL Server

valeur: un alias pour l'identification, pratique pour les instructions SQL d'utiliser l'attribut databaseId pour référencer

DB_VENDOR

- Il sera défini par la chaîne retournée par DatabaseMetaData # getDatabaseProductName (). Étant donné que cette chaîne est généralement très longue et que différentes versions du même produit renverront des valeurs différentes, il est préférable de définir un alias d'attribut pour le rendre

Raccourcir

• Les règles de correspondance MyBatis sont les suivantes:

- 1. Si la balise databaseIdProvider n'est pas configurée, alors databaseId = null

- 2. Si la balise databaseIdProvider est configurée, utilisez le nom configuré sur la balise pour correspondre aux informations de la base de données, et définissez databaseId = la valeur spécifiée par la configuration sur la correspondance, sinon elle sera toujours nulle

- 3. Si le databaseId n'est pas nul, il ne trouvera que l'instruction SQL qui configure le databaseId

- 4. MyBatis chargera toutes les instructions sans l'attribut databaseId et avec l'attribut databaseId correspondant à la base de données actuelle. Si la même instruction avec databaseId et sans databaseId est trouvée en même temps, cette dernière sera ignorée.

mappeurs

mapper: enregistrer un mappage SQL

Enregistrer le profil

ressource: référence le fichier de mappage sql sous le chemin de classe

url: utilisez le fichier de mappage sql dans le chemin réseau ou le chemin du disque

Interface d'inscription

classe: interface d'application citée

1. Fichier de mappage d'interface. Le nom du fichier de mappage doit être identique au nom de l'interface et placé dans le même répertoire.

2. Il n'y a pas de fichier de mappage sql, tout sql est écrit sur l'interface avec des annotations

Les annotations sont écrites sur l'interface

Recommandation: il est plus important et compliqué d'écrire des fichiers de mappage sql dans l'interface Dao, pas important et simple, vous pouvez utiliser des annotations pour un développement rapide

package: enregistrement par lots

fichier de mappage sql

namespace: espace de noms; spécifié comme nom de classe complet de l'interface

id: identifiant unique

resultType: type de valeur de retour

# {id}: retirez la valeur de l'identifiant du paramètre passé

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="school.xauat.mybatis.dao.EmployeeMapper">
    <select id="getEmpById" resultType="employee" >
        select * from tbl_employee where id = #{id}
    </select>
    <select id="getEmpById" resultType="employee" databaseId="mysql">
        select * from tbl_employee where id = #{id}
    </select>
    <select id="getEmpById" resultType="employee" databaseId="oracle">
        select * from tbl_employee where id = #{id}
    </select>
</mapper>

Pour résumer

1. L'interface est en train de programmer

Primitif: Dao -----> DaoImpl

Mybatis: Mapper -----> xxMapper.xml

2. SqlSession représente une session avec la base de données, qui doit être fermée lorsqu'elle est épuisée

3. SqlSession, comme la connexion, n'est pas thread-safe. Vous devriez obtenir un nouvel objet chaque fois que vous l'utilisez

4. L'interface du mappeur n'a pas de classe d'implémentation, mais Mybatis générera un objet proxy pour cette interface (liant l'interface et xml)

EmployeeMapper empMapper = SqlSession.getMapper (Employee.class);

5. Deux fichiers de configuration importants

Fichier de configuration global Mybatis; contient des informations sur le pool de connexion à la base de données, des informations sur le gestionnaire de transactions, des informations sur le fonctionnement du système

fichier de mappage sql: enregistre les informations de mappage de chaque instruction SQL

Extraire sql

Je suppose que tu aimes

Origine blog.csdn.net/qq_45796208/article/details/110508432
conseillé
Classement