MyBatis的核心配置文件 SqlMapConfig.xml(五)上

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: MyBatis的核心配置文件 SqlMapConfig.xml(五)

一.核心配置文件 SqlMapConfig.xml


有的叫 SqlMapConfig.xml, 也有的叫 mybatis-config.xml, 这里习惯用 SqlMapConfig.xml . 其中,这个配置文件主要配置的内容依次是: 注意,顺序是不能颠倒的。 可见约束文件。


<?xml version="1.0" encoding="UTF-8"?>
<!-- 引入约束 -->
<!DOCTYPE configuration  
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"  
  "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
  <properties/> <!--配置属性信息--->
  <setting/>      <!--设置-mybatis 运行参数-->
  <typeAliases /><!--类型命名 别名-->
  <typeHandlers/><!--类型处理器--->
  <objectFactory/><!--对象工厂-->
  <plugins/>          <!--插件--->
  <environments>  <!--配置环境-->
    <environment><!--环境变量-->
      <transactionManager/><!--事务管理器-->
        <dataSource /><!--数据源-->
    </environment>
  </environments>
  <databaseIdProvider/><!--数据库厂商标识-->
  <mappers/><!--映射器-->
</configuration>


这里,只讲一些常见的使用方式,如<properties>属性,<setting> <typeAliases> <environments> <mappers> 其余的暂时不讲。


二. properties 属性


可以引用配置文件,或者提前设置属性,来进行引用属性。 常见的就是关于数据库的配置。


以前的写法:


<!-- 开发环境  development -->
  <environments default="development">
    <environment id="development">
      <!-- 事务管理 -->
      <transactionManager type="JDBC"></transactionManager>
      <!-- 数据源 ,为pooled 连接池 -->
      <dataSource type="pooled">
        <!-- 直接硬编码在dataSource 资源里面 -->
        <property name="driver" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf8"/>
        <property name="username" value="root"/>
        <property name="password" value="abc123"/>
      </dataSource> 
    </environment>
  </environments>


二.一 子元素设置


<!-- 子元素设置 -->
  <properties>
    <!-- 先设置一些属性,为了避免username和password重复,前面用jdbc. 前缀 -->
    <property name="jdbc.driver" value="com.mysql.jdbc.Driver"/>
    <property name="jdbc.url" value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf8"/>
    <property name="jdbc.username" value="root"/>
    <property name="jdbc.password" value="abc123"/>
  </properties>


然后在 datasource 数据库资源中配置:


<!-- 数据源 ,为pooled 连接池 -->
  <dataSource type="pooled">
        <!-- 直接硬编码在dataSource 资源里面 -->
        <property name="driver" value="${jdbc.driver}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
</dataSource> 


调用测试方法 findAllTest 可以正常的查询。


二.二 配置文件


在src 源文件下创建jdbc.properties 配置文件,里面设置属性,进行相应的引用。


20190624191738535.png


jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf8
jdbc.username=root
jdbc.password=abc123


SqlMapConfig.xml 中引入配置文件


  <!--配置文件引入  url为网络资源, 只能引入一个文件-->
  <properties resource="jdbc.properties"></properties>


相应的数据源配置为:


<!-- 数据源 ,为pooled 连接池 -->
      <dataSource type="pooled">
        <!-- 直接硬编码在dataSource 资源里面 -->
        <property name="driver" value="${jdbc.driver}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
      </dataSource>


二.三 程序参数传递


如数据库开发时, 数据库的用户名和密码,生产数据库的用户名和密码应该对开发者是保密的,运维人员需要对其进行相应的加密,所以配置文件中的信息通常是加密后的信息。


代码形式为:


/**
   * 单例模式 获取实例
   * @author 两个蝴蝶飞
   * @return
   */
  public static SqlSessionFactory getInstance(){
    synchronized(SqlSessionFactoryUtils.class){
      if(sqlSessionFactory==null){
        InputStream input=null;
        // Mybatis 核心配置文件名
        String resource_name="SqlMapConfig.xml";
        //关于属性文件
        InputStream proStream=null;
        Reader propReader=null;
        Properties properties=null;
        try {
          input=Resources.getResourceAsStream(resource_name);
          proStream=Resources.getResourceAsStream("jdbc.properties");
          propReader=new InputStreamReader(proStream);
          properties=new Properties();
          properties.load(propReader);
          //重新编码用户名和密码 ,开发者定义好的的decode encode() 的加密和解密规则。
          properties.setProperty("username",decode(properties.getProperty("jdbc.username")));
          properties.setProperty("password",decode(properties.getProperty("jdbc.password")));
          sqlSessionFactory=new SqlSessionFactoryBuilder().build(input,properties);
        } catch (IOException e) {
          e.printStackTrace();
        }
      }
    }
    return sqlSessionFactory;
  }


二.四 优先级


程序参数传递的优先级最高, 配置文件resource/url 的次之,properties 属性中指定的属性优先级最低。


建议:


最好不要混用,只用一种方式即可。

最好选用 属性文件的方式进行配置。


三. setting 配置


setting 配置属性,会改变mybatis的运行时的行为,即使不配置setting,程序也会正常的运行。


setting 配置的各项参数有:


20190624213103557.png


20190624213146205.jpg


20190624213207741.png


20190625191836453.png


上面的这些配置不需要全部都配置,只需要配置常用的一些属性即可。

常用的开发中,需要配置的属性:


<settings>
    <!-- 设置配置文件 -->
    <!-- 开启二级缓存 -->
    <setting name="cacheEnabled" value="true"/>
    <!-- 控制懒加载的 -->
    <setting name="lazyLoadingEnabled" value="true"/>
    <setting name="aggressiveLazyLoading" value="false"/>
    <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="localCacheScope" value="SESSION"/>
    <setting name="jdbcTypeForNull" value="OTHER"/>
    <setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/>
    <!-- 设置日志为 log4j -->
    <setting name="logImpl" value="LOG4J"/>
  </settings>



相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
XML Java 数据格式
Spring从入门到入土(xml配置文件的基础使用方式)
本文详细介绍了Spring框架中XML配置文件的使用方法,包括读取配置文件、创建带参数的构造对象、使用工厂方法和静态方法创建对象、对象生命周期管理以及单例和多例模式的测试。
125 7
Spring从入门到入土(xml配置文件的基础使用方式)
|
6天前
|
XML Java 数据格式
使用idea中的Live Templates自定义自动生成Spring所需的XML配置文件格式
本文介绍了在使用Spring框架时,如何通过创建`applicationContext.xml`配置文件来管理对象。首先,在resources目录下新建XML配置文件,并通过IDEA自动生成部分配置。为完善配置,特别是添加AOP支持,可以通过IDEA的Live Templates功能自定义XML模板。具体步骤包括:连续按两次Shift搜索Live Templates,配置模板内容,输入特定前缀(如spring)并按Tab键即可快速生成完整的Spring配置文件。这样可以大大提高开发效率,减少重复工作。
使用idea中的Live Templates自定义自动生成Spring所需的XML配置文件格式
|
1月前
|
SQL 缓存 Java
MyBatis如何关闭一级缓存(分注解和xml两种方式)
MyBatis如何关闭一级缓存(分注解和xml两种方式)
83 5
|
2月前
|
XML Java 应用服务中间件
tomcat学习一:tomcat 目录及配置文件学习 server.xml 等
这篇文章是关于Apache Tomcat服务器的目录结构、配置文件(特别是server.xml)的详细介绍和学习指南。
116 0
tomcat学习一:tomcat 目录及配置文件学习 server.xml 等
|
2月前
|
XML 存储 JSON
framework 的配置文件在.netcore里面不能用怎么处理?在.netcore中创建.xml配置文件
framework 的配置文件在.netcore里面不能用怎么处理?在.netcore中创建.xml配置文件
37 0
|
2月前
|
安全 内存技术
【文件上传-配置文件】crossdomain.xml跨域策略配置文件上传
【文件上传-配置文件】crossdomain.xml跨域策略配置文件上传
|
3月前
|
SQL XML Java
mybatis :sqlmapconfig.xml配置 ++++Mapper XML 文件(sql/insert/delete/update/select)(增删改查)用法
当然,这些仅是MyBatis功能的初步介绍。MyBatis还提供了高级特性,如动态SQL、类型处理器、插件等,可以进一步提供对数据库交互的强大支持和灵活性。希望上述内容对您理解MyBatis的基本操作有所帮助。在实际使用中,您可能还需要根据具体的业务要求调整和优化SQL语句和配置。
71 1
|
5月前
|
存储 缓存 分布式计算
Hadoop配置文件core-site.xml
【7月更文挑战第17天】
353 2
Hadoop配置文件core-site.xml
|
5月前
|
XML 分布式计算 资源调度
Hadoop配置文件mapred-site.xml
【7月更文挑战第18天】
451 7
|
5月前
|
存储 机器学习/深度学习 分布式计算
Hadoop配置文件hdfs-site.xml
【7月更文挑战第17天】
388 5