Analyse de la configuration de base mybatis-config.xml dans mybatis

référence mybatis

Configuration du fichier de base

  • Dans le projet mybatis, il doit y avoir un fichier de configuration, le nom du fichier est généralement nommé mybatis-config.xml
  • Le fichier de configuration MyBatis contient des paramètres et des informations sur les attributs qui affecteront profondément le comportement de MyBatis. La structure de niveau supérieur du document de configuration est la suivante:
  • Notez que les attributs sont dans l'ordre, et les attributs doivent être marqués strictement dans cet ordre
configuration(配置)
	properties(属性)
	settings(设置)
	typeAliases(类型别名)
	typeHandlers(类型处理器)
	objectFactory(对象工厂)
	plugins(插件)
	environments(环境配置)
		environment(环境变量)
			transactionManager(事务管理器)
			dataSource(数据源)
	databaseIdProvider(数据库厂商标识)
	mappers(映射器)
  • Voici un exemple de fichier de configuration:
<?xml version="1.0" encoding="UTF8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>

    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis_db?useSSL=true&amp;useUnicode=true;characterEncoding=UTF-8&amp;serverTimezone=UTC"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>

    <!--每一个Mapper文件都要在mybatis核心配置文件中注册!-->
    <mappers>
        <mapper resource="com/LinXiaoDe/dao/userMapper.xml"></mapper>
    </mappers>
</configuration>

(1) l'attribut d'environnement, sélectionnez différents environnements par id

 <environments default="development">
 	在这里通过id选择不同的配置文件
     <environment id="test">
         <transactionManager type="JDBC"/>
         <dataSource type="POOLED">
             <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
             <property name="url" value="jdbc:mysql://localhost:3306/mybatis_db?useSSL=true&amp;useUnicode=true;characterEncoding=UTF-8&amp;serverTimezone=UTC"/>
             <property name="username" value="root"/>
             <property name="password" value="123456"/>
         </dataSource>
     </environment>
     
     <environment id="test">
         <transactionManager type="JDBC"/>
         <dataSource type="POOLED">
             <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
             <property name="url" value="jdbc:mysql://localhost:3306/mybatis_db?useSSL=true&amp;useUnicode=true;characterEncoding=UTF-8&amp;serverTimezone=UTC"/>
             <property name="username" value="root"/>
             <property name="password" value="123456"/>
         </dataSource>
     </environment>
 </environments>

(2) propriétés

Cet attribut peut être configuré en externe et peut être remplacé dynamiquement. Vous pouvez configurer ces propriétés dans un fichier de propriétés Java typique ou dans les sous-éléments de l'élément properties. Par exemple:

  • Réglage direct
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
             <property name="url" value="jdbc:mysql://localhost:3306/mybatis_db?useSSL=true&amp;useUnicode=true;characterEncoding=UTF-8&amp;serverTimezone=UTC"/>
             <property name="username" value="root"/>
             <property name="password" value="123456"/>
  • Importer des fichiers externes

Insérez la description de l'image ici

Insérez la description de l'image ici

  • Lorsque les deux existent en même temps, la configuration de fichier externe est préférée

(3) Optimisation de l'attribut d'alias <typeAliases>

Dans le fichier de configuration Mapper, pour implémenter les opérations de base de données, nous devons généralement spécifier la valeur de retour ou la valeur du paramètre. Par exemple:

    <select id="getUserLike" parameterType="String" resultType="com.LinXiaoDe.pojo.User">
        select * from mybatis_db.user_t where userName like #{
    
    value}
    </select>

Mais le champ d'injection resultType est très long, vous pouvez envisager d'utiliser des <Aliase>alias pour l'optimisation, il existe généralement trois façons:

  • typeAlias: étiquette d'alias
  • package: pour chaque Java Bean du package domain.blog, s'il n'y a pas d'annotation, le nom de classe non qualifié du Bean sera utilisé comme alias. Lorsqu'il y a une annotation, l'alias est la valeur d'annotation. Écrit au début de la classe javaBean
  • Les exemples sont les suivants:
<typeAliases>
 	//1
    <typeAlias type="com.LinXiaoDe.pojo.User" alias="user"/>
    //2 默认以类命首字母小写
	<package name="com.LinXiaoDe.pojo"/>
</typeAliases>
  • 3. Package + Annotation

Insérez la description de l'image ici

mapper配置文件可以这样写:
 <select id="getUserLike" parameterType="String" resultType="user">
     select * from mybatis_db.user_t where userName like #{
    
    value}
 </select>

Alias ​​de type intégrés Java courants

Insérez la description de l'image ici
Insérez la description de l'image ici

(4) réglage

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

  • Chargement paresseux
  • Implémentation du journal
  • Cache activé et désactivé
<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="autoMappingBehavior" value="PARTIAL"/>
  <setting name="autoMappingUnknownColumnBehavior" value="WARNING"/>
  <setting name="defaultExecutorType" value="SIMPLE"/>
  <setting name="defaultStatementTimeout" value="25"/>
  <setting name="defaultFetchSize" value="100"/>
  <setting name="safeRowBoundsEnabled" value="false"/>
  <setting name="mapUnderscoreToCamelCase" value="false"/>
  <setting name="localCacheScope" value="SESSION"/>
  <setting name="jdbcTypeForNull" value="OTHER"/>
  <setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/>
</settings>

Usine de bois

logImplSpécifiez l'implémentation spécifique du journal utilisé par MyBatis. Si ce n'est pas spécifié, il sera automatiquement recherché. La valeur d'attribut peut être:

  • SLF4J
  • LOG4J (maître)
  • LOG4J2
  • JDK_LOGGING
  • COMMONS_LOGGING
  • STDOUT_LOGGING (journal standard, aucune dépendance d'importation supplémentaire, maître)
  • NO_LOGGING
  • Non défini par défaut

Ajoutez le fichier de configuration de base <logImpl>, par exemple:

Journal standard ①STDOUT_LOGGING

<settings>
    <setting name="logImpl" value="STDOUT_LOGGING"/>
</settings>

Insérez la description de l'image ici
② Log4j

  • Log4j est un projet open source d'Apache
  • En utilisant Log4j, nous pouvons contrôler la destination de la livraison des informations du journal: console, texte, composants de l'interface graphique ...
  • Nous pouvons également contrôler le format de sortie de chaque journal;
  • En définissant le niveau de chaque information de journal, nous pouvons contrôler le processus de génération de journal plus en détail.
  • La chose la plus intéressante est que ceux-ci peuvent être configurés de manière flexible via un fichier de configuration sans modifier le code de l'application.

Instructions:

  • 1. Importez les dépendances depuis le référentiel maven

log4j

  • 2. Créez un nouveau fichier de configuration log4j.properties dans le répertoire de ressources
#将等级为DEBUG的日志信息输出到console和file这两个目的地,console和file的定义在下面的代码
log4j.rootLogger=DEBUG,console,file

#控制台输出的相关设置
log4j.appender.console = org.apache.log4j.ConsoleAppender
log4j.appender.console.Target = System.out
log4j.appender.console.Threshold=DEBUG
log4j.appender.console.layout = org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=[%c]-%m%n

#文件输出的相关设置
log4j.appender.file = org.apache.log4j.RollingFileAppender
log4j.appender.file.File=./log/kuang.log
log4j.appender.file.MaxFileSize=10mb
log4j.appender.file.Threshold=DEBUG
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=[%p][%d{yy-MM-dd}][%c]%m%n

#日志输出级别
log4j.logger.org.mybatis=DEBUG
log4j.logger.java.sql=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.ResultSet=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
  • 3. Définition de la mise en œuvre du journal
    <settings>
        <setting name="logImpl" value="LOG4J"/>
    </settings>
  • 4. Utilisez Log4j pour la sortie dans le programme!
static Logger logger = Logger.getLogger(test.class);
@Test
public void selectUser() {
    
    
    logger.info("info:进入selectUser方法");
    logger.debug("debug:进入selectUser方法");
    logger.error("error: 进入selectUser方法");
    SqlSession session = MyBatisUtil.getSqlSession();
    UserMapper mapper = session.getMapper(UserMapper.class);
    List<User> users = mapper.getUsers();
    for (User user: users){
    
    
        System.out.println(user);
    }
    session.close();
}

(5) Cartographe

Maintenant que le comportement de MyBatis a été configuré par les éléments ci-dessus, nous allons maintenant définir l'instruction de mappage SQL. Mais d'abord, nous devons dire à MyBatis où trouver ces phrases. En termes de recherche automatique de ressources, Java ne fournit pas une bonne solution, le meilleur moyen est donc d'indiquer directement à MyBatis où trouver le fichier de mappage. Vous pouvez utiliser des références de ressources relatives au chemin de classe, ou des localisateurs de ressources complets (y compris des URL sous la forme de fichier: ///), ou des noms de classe et des noms de package. Par exemple:

  • Utiliser des références de ressources par rapport au chemin de classe
<!-- 使用相对于类路径的资源引用 -->
<mappers>
  <mapper resource="org/mybatis/builder/AuthorMapper.xml"/>
  <mapper resource="org/mybatis/builder/BlogMapper.xml"/>
  <mapper resource="org/mybatis/builder/PostMapper.xml"/>
</mappers>
  • Implémentez le nom de classe complet de la classe à l'aide de l'interface du mappeur
<!-- 使用映射器接口实现类的完全限定类名 -->
<mappers>
  <mapper class="org.mybatis.builder.AuthorMapper"/>
  <mapper class="org.mybatis.builder.BlogMapper"/>
  <mapper class="org.mybatis.builder.PostMapper"/>
</mappers>
  • Enregistrer toutes les implémentations d'interface de mappeur dans le package en tant que mappeurs
<!-- 将包内的映射器接口实现全部注册为映射器 -->
<mappers>
  <package name="org.mybatis.builder"/>
</mappers>

Je suppose que tu aimes

Origine blog.csdn.net/weixin_44307065/article/details/108028211
conseillé
Classement