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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 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>



相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
8月前
|
存储 Java 文件存储
微服务——SpringBoot使用归纳——Spring Boot使用slf4j进行日志记录—— logback.xml 配置文件解析
本文解析了 `logback.xml` 配置文件的详细内容,包括日志输出格式、存储路径、控制台输出及日志级别等关键配置。通过定义 `LOG_PATTERN` 和 `FILE_PATH`,设置日志格式与存储路径;利用 `&lt;appender&gt;` 节点配置控制台和文件输出,支持日志滚动策略(如文件大小限制和保存时长);最后通过 `&lt;logger&gt;` 和 `&lt;root&gt;` 定义日志级别与输出方式。此配置适用于精细化管理日志输出,满足不同场景需求。
2044 1
|
8月前
|
XML Java 数据库连接
微服务——SpringBoot使用归纳——Spring Boot集成MyBatis——基于 xml 的整合
本教程介绍了基于XML的MyBatis整合方式。首先在`application.yml`中配置XML路径,如`classpath:mapper/*.xml`,然后创建`UserMapper.xml`文件定义SQL映射,包括`resultMap`和查询语句。通过设置`namespace`关联Mapper接口,实现如`getUserByName`的方法。Controller层调用Service完成测试,访问`/getUserByName/{name}`即可返回用户信息。为简化Mapper扫描,推荐在Spring Boot启动类用`@MapperScan`注解指定包路径避免逐个添加`@Mapper`
428 0
|
3月前
|
SQL Java 数据库连接
MyBatis的配置文件中定义类型别名(type aliases)的技巧。
类型别名提供了一种便捷的方式来引用复杂的全限定类名。通过使用 `<package>`标签进行自动扫描或使用 `<typeAlias>`标签手动指定,可以在整个MyBatis配置中提高清晰度和维护性。无论是简化mapper文件中的配置,还是提高整体的配置可读性,类型别名都是一个非常有用的配置工具。
176 0
|
XML Java 数据格式
Spring从入门到入土(xml配置文件的基础使用方式)
本文详细介绍了Spring框架中XML配置文件的使用方法,包括读取配置文件、创建带参数的构造对象、使用工厂方法和静态方法创建对象、对象生命周期管理以及单例和多例模式的测试。
656 7
Spring从入门到入土(xml配置文件的基础使用方式)
|
6月前
|
SQL XML Java
菜鸟之路Day35一一Mybatis之XML映射与动态SQL
本文介绍了MyBatis框架中XML映射与动态SQL的使用方法,作者通过实例详细解析了XML映射文件的配置规范,包括namespace、id和resultType的设置。文章还对比了注解与XML映射的优缺点,强调复杂SQL更适合XML方式。在动态SQL部分,重点讲解了`&lt;if&gt;`、`&lt;where&gt;`、`&lt;set&gt;`、`&lt;foreach&gt;`等标签的应用场景,如条件查询、动态更新和批量删除,并通过代码示例展示了其灵活性与实用性。最后,通过`&lt;sql&gt;`和`&lt;include&gt;`实现代码复用,优化维护效率。
544 5
|
8月前
|
XML Java 数据库连接
二、搭建MyBatis采用xml方式,验证CRUD(增删改查操作)
二、搭建MyBatis采用xml方式,验证CRUD(增删改查操作)
259 21
|
8月前
|
XML Java 数据库连接
三、MyBatis核心配置文件详解
三、MyBatis核心配置文件详解
183 15
|
11月前
|
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配置文件格式
|
SQL 缓存 Java
MyBatis如何关闭一级缓存(分注解和xml两种方式)
MyBatis如何关闭一级缓存(分注解和xml两种方式)
456 5
|
XML Java 应用服务中间件
tomcat学习一:tomcat 目录及配置文件学习 server.xml 等
这篇文章是关于Apache Tomcat服务器的目录结构、配置文件(特别是server.xml)的详细介绍和学习指南。
647 0
tomcat学习一:tomcat 目录及配置文件学习 server.xml 等