热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:MyBatis的基本要素—核心配置文件

篇首语:本文由编程笔记#小编为大家整理,主要介绍了MyBatis的基本要素—核心配置文件相关的知识,希望对你有一定的参考价值。MyB

篇首语:本文由编程笔记#小编为大家整理,主要介绍了MyBatis 的基本要素—核心配置文件相关的知识,希望对你有一定的参考价值。



MyBatis 核心配置文件( mybatis-config.xml),该文件配置了 MyBatis 的一些全局信息,包含数据库连接信息和 MyBatis 运行时所需的各种特性,以及设置和影响 MyBatis 行为的一些属性。

  

mybatis-config.xml 文件结构

  mybatis-config.xml 文件需配置一些基本元素,需要注意的是,该配置文件的元素节点是有先后顺序的,其层次结构如下图: 

 

  说明

    1、从上图中可以看出,configuration 元素是整个 XML 配置文件的根节点,其角色就相当于是 MyBatis 的总管, MyBatis 所有的配置信息都会存放在它里面。 MyBatis 还提供了设置这些配置信息的方法。 Configuration 可从配置文件里获取属性值,也可以通过程序直接设置。Configuration 可供配置的内容如下。

    2、mybatis-config.xml  文件的元素节点是有一定顺序的,节点位置若不按顺序排位,那么 XML 文件会报错。

 

 

1、properties 元素
  properties 元素描述的都是外部化、可替代的属性。那么这些属性如何获取?有以下两种方式实现。

 

  (1)可通过外部指定的方式,将数据库连接相关信息配置在典型的 Java 属性配置文件中(如 database. properties),并使用这些属性对配置项实现动态配置。即通过 resource 属性从外部指定 properties 属性文件( database.properties ),该属性文件描述数据库连接的相关配置(数据库驱动、连接数据库的 url ,数据库用户名,数据库密码),位置也是在/ resources 目录下。代码如下:


①database. properties:
driver
=com.mysql.jdbc.Driver
url
=jdbc:mysql://127.0.0.1:3306/smbms?userUnicode=true&characterEncoding=utf-8&&zeroDateTimeBehavior=convertToNull
username=root
password
=root
②mybatis
-config.xml 部分内容:

  
  
      ......
  

      
      
      
      
  


说明:上述代码中,driver、url、username、password 属性将会用包含进来的 database. properties 文件中的值来替换。

 

  (2)直接配置为 xml ,并使用这些属性对配置项实现动态配置,代码如下:


mybatis-config.xml 部分内容:








······







说明:上述代码中,driver、url、username、password 将会由 properties 元素中设置的值来替换。

 

  问题思考:若两种方式同时都用了,那么哪种方式优先?如下代码所示:






分析:这个例子中的 property 子节点设置的 username 和 password 的值会先被读取,由于 database properties 中也设置了这两个属性,所以 resource 中同名属性将会覆盖 property 子节点的值。
结论: resource 属性值的优先级高于 property子节点配置的值。

 

 

2、settings 元素

  settings 元素的作用是设置一些非常重要的设置选项,用于设置和改变 MyBatis 运行中的行为,比如此处设置 MyBatis 的 log 日志实现为 LOG4J,即使用 log4j 实现日志功能。

  常用配置如下表:



































设置项描述允许值默认值
cacheEnabled对在此配置文件下的所有 cache 进行全局性开/关设置true/falsetrue
lazyLoadingEnabled全局性设置懒加载。如果设为 false ,则所有相关联的都会被初始化加载true/falsetrue
autoMappingBehaviorMyBatis对于resultMap自动映射匹配级别NONE /PARTIAL: /FULLPARTIAL
logImpl指定 Mybatis 所用日志的具体实现,未指定时将自动查找 SLF4J | LOG4J | LOG4J2 |... Not set

 

 

 

   

 

  

  autoMappingBehavior 讲解

  Mybatis的自动映射策略默认是开启的,而且默认是只对非嵌套的resultMap进行自动映射。这是通过Mybatis的全局配置autoMappingBehavior参数配置的。它一共有三种取值,分别是NONE、PARTIAL和FULL。


NONE:表示不启用自动映射
PARTIAL:表示只对非嵌套的resultMap进行自动映射
FULL:表示对所有的resultMap都进行自动映射

 

  

3、typeAliases 元素

  typeAliases 元素的作用是配置类型别名,通过与 MyBatis 的 SQL 映射文件相关联,减少输入多余的完整类名,以简化操作。具体配置如下:






 

   以上这种写法的弊端在于如果一个项目中有多个 POJO 的时候,需要一一进行配置,所以有更加简化的写法,就是通过 package 的 name 属性直接指定包名, MyBatis 会自动扫描指定包下的 JavaBean ,并默认设置一个别名,默认名称为 JavaBean 的非限定类名。具体配置如下:




<package name ="cn.smbms.pojo" />


说明:

  1、配置了 typeAliases 元素,在 Mapper.xml 中的 resultType 属性无须写完全限定名com.smbms.pojo.User,只需要写 User 或 user 不区分大小写。
  
2、对于基础数据类型, MyBatis 已经为许多常见的 Java 类型内建了相应的类型别名,一般都是与其映射类型一致,并且它们都是大小写不敏感的,

   比如映射的类型 int、Boolean、String、Integer 等,它们的别名就是 int 、Boolean或boolean、String或string、Integer或integer。


4、environments 元素

  表示配置 MyBatis 的多套运行环境,MyBatis 可以配置多套运行环境,如开发环境、测试环境、生产环境等,我们可以灵活选择不同的配置,从而将 SQL 映射应用到不同的数据库环境上。这些不同的运行环境,就可以通过 environments 元素来配置。environments 元素节点下通过配置多个 environment 子元素节点,实现配置多套运行环境,但是不管增加几套运行环境,都必须要明确选择出当前的唯一一个运行环境(即默认运行环境:通过 default 指定)。这是因为毎个数据库都是对应一个 SqlSessionFactorγ 实例的,需要指明哪个运行环境将被创建,并把运行环境中设置的参数传递给 SqlSessionFactoryBuilder。具体配置如下:



default="development">
    
    
   
   

   
   
  
  
  
  
   





    ··········


environment:配置 MyBatis 的一套运行环境,需指定运行环境 ID、事务管理、数据源配置等相关信息。

 

  注意点:

     1、默认的运行 ID :通过 default 属性来指定当前的运行环境 ID 为 development ,对于环境 ID 的命名要确保唯一。
     2、transactionManager 事务管理器,设置其类型为 JDBC(MyBatis 有两种事务管理类型,即JDBC、MANAGED),直接使用 JDBC 的提交和回滚功能,依赖于从数据源获得连接来管理事务的生命周期。
     3、dataSource 元素使用标准的 JDBC 数据源接口来配置 JDBC 连接对象的资源。 MyBatis 提供了三种数据源类型(UNPOOLED、POOLED、JNDI),这里我们使用 POOLED 数据源类型。该类型的实现利用 “池” 的概念将 JDBC 连接对象组织起来,避免了创建新的连接实例时所必需的初始化和认证时间,是 MyBatis 实现的简单的数据库连接池类型,它使数据库连接可被复用,不必在每次请求时都去创建一个物理连接。这对于高并发的 Web 应用是一种流行的处理方式,有利于快速响应请求。

 


5、mappers 元素
  mappers:映射器,在 中有两个子元素 ,用来定义 SQL 的映射语句,我们只需要告诉 MyBatis 去哪里找到这些 SQL 语句(即去哪里找相应的 SQL 映射文件),整个项目中可以有1个或多个SQL 映射文件。可以使用类资源路径或者 URL 等,具体代码如下:


  方式一:使用类资源路径获取资源(推荐使用)




    
   
......

mapper: mappers 的子元素节点,具体指定 SQL 映射文件的路径,其中 resource 属性的值表述了 SQL 映射文件的路径(类资源路径)。

 

  方式二:使用 URL 获取资源

  eclipse 查看文件 URL:右击要查看的文件   >>  Properties    >>   Resource   >>   右侧 Location  即为文件位置(复制粘贴路径即可)






 

  方式三:使用  获取资源



  

注意:这种方式必须保证接口名和 SQL 映射文件名相同,还必须在同一个包中。

 

  方式四:



  class="cn.mybatis.dao.ProviderMapper"/>

注意:
   1、这种方式必须保证接口名和 SQL 映射文件名相同,还必须在同一个包中。
   2、使用此方式对于接口方法使用注解方式来说,没有同包同名的限制条件。

 



推荐阅读
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • 在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板
    本文介绍了在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板的方法和步骤,包括将ResourceDictionary添加到页面中以及在ResourceDictionary中实现模板的构建。通过本文的阅读,读者可以了解到在Xamarin XAML语言中构建控件模板的具体操作步骤和语法形式。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
  • 树莓派语音控制的配置方法和步骤
    本文介绍了在树莓派上实现语音控制的配置方法和步骤。首先感谢博主Eoman的帮助,文章参考了他的内容。树莓派的配置需要通过sudo raspi-config进行,然后使用Eoman的控制方法,即安装wiringPi库并编写控制引脚的脚本。具体的安装步骤和脚本编写方法在文章中详细介绍。 ... [详细]
  • iOS超签签名服务器搭建及其优劣势
    本文介绍了搭建iOS超签签名服务器的原因和优势,包括不掉签、用户可以直接安装不需要信任、体验好等。同时也提到了超签的劣势,即一个证书只能安装100个,成本较高。文章还详细介绍了超签的实现原理,包括用户请求服务器安装mobileconfig文件、服务器调用苹果接口添加udid等步骤。最后,还提到了生成mobileconfig文件和导出AppleWorldwideDeveloperRelationsCertificationAuthority证书的方法。 ... [详细]
  • Spring框架《一》简介
    Spring框架《一》1.Spring概述1.1简介1.2Spring模板二、IOC容器和Bean1.IOC和DI简介2.三种通过类型获取bean3.给bean的属性赋值3.1依赖 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
    本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • Android系统移植与调试之如何修改Android设备状态条上音量加减键在横竖屏切换的时候的显示于隐藏
    本文介绍了如何修改Android设备状态条上音量加减键在横竖屏切换时的显示与隐藏。通过修改系统文件system_bar.xml实现了该功能,并分享了解决思路和经验。 ... [详细]
  • r2dbc配置多数据源
    R2dbc配置多数据源问题根据官网配置r2dbc连接mysql多数据源所遇到的问题pom配置可以参考官网,不过我这样配置会报错我并没有这样配置将以下内容添加到pom.xml文件d ... [详细]
  • web.py开发web 第八章 Formalchemy 服务端验证方法
    本文介绍了在web.py开发中使用Formalchemy进行服务端表单数据验证的方法。以User表单为例,详细说明了对各字段的验证要求,包括必填、长度限制、唯一性等。同时介绍了如何自定义验证方法来实现验证唯一性和两个密码是否相等的功能。该文提供了相关代码示例。 ... [详细]
  • 突破MIUI14限制,自定义胶囊图标、大图标样式,支持任意APP
    本文介绍了如何突破MIUI14的限制,实现自定义胶囊图标和大图标样式,并支持任意APP。需要一定的动手能力和主题设计师账号权限或者会主题pojie。详细步骤包括应用包名获取、素材制作和封包获取等。 ... [详细]
  • 本文介绍了在Mac上安装Xamarin并使用Windows上的VS开发iOS app的方法,包括所需的安装环境和软件,以及使用Xamarin.iOS进行开发的步骤。通过这种方法,即使没有Mac或者安装苹果系统,程序员们也能轻松开发iOS app。 ... [详细]
author-avatar
惠嘟du
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有