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

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 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>



相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
14天前
|
XML Java 数据库连接
mybatis中在xml文件中通用查询结果列如何使用
mybatis中在xml文件中通用查询结果列如何使用
16 0
|
1月前
|
XML Java 数据库连接
mybatis环境搭建步骤(含配置文件代码)
mybatis环境搭建步骤(含配置文件代码)
15 1
|
1月前
|
缓存 Java 数据库连接
【MyBatis】主配置文件
【MyBatis】主配置文件
24 0
|
3天前
|
XML Java 数据库连接
Javaweb之Mybatis的XML配置文件的详细解析
Javaweb之Mybatis的XML配置文件的详细解析
13 0
|
1月前
|
Java 数据库连接 mybatis
Mybatis+mysql动态分页查询数据案例——Mybatis的配置文件(mybatis-config.xml)
Mybatis+mysql动态分页查询数据案例——Mybatis的配置文件(mybatis-config.xml)
20 1
|
1月前
Mybatis+mysql动态分页查询数据案例——配置映射文件(HouseDaoMapper.xml)
Mybatis+mysql动态分页查询数据案例——配置映射文件(HouseDaoMapper.xml)
15 1
|
1月前
|
SQL Java 数据库连接
Mybatis中Mapper.xml 文件使用注释遇到的坑
Mybatis中Mapper.xml 文件使用注释遇到的坑
|
1月前
|
XML Java 数据库连接
【Mybatis】XML映射文件
【Mybatis】XML映射文件
27 0
|
1月前
|
SQL Java 数据库连接
挺详细的spring+springmvc+mybatis配置整合|含源代码
挺详细的spring+springmvc+mybatis配置整合|含源代码
42 1
|
1月前
|
druid Java 数据库连接
Spring Boot3整合MyBatis Plus
Spring Boot3整合MyBatis Plus
45 1