MyBatis-全局配置文件

在MyBatis中全局配置文件有着重要的地位,里面有9类行为信息;如果我们要想将MyBatis运用的熟练,配置全局配置文件是必不可少的步骤,所以我们一定要啃下这一块硬骨头。该文章是结合MyBatis配置文件网页加个人理解做的笔记,如果有的地方写的不够好或者有错误。恳请大家多多给我指出,因为我也是在摸索中进步。下面将对9大行为信息和属性信息配置进行解释.

1. MyBatis配置

注:MyBatis的标签是有顺序的,如果不按照顺序会出现The content of element type "configuration" must match 错误.标签的顺序为:

在Eclipse中引入XML的dtd约束文件,方便编写XML的时候有提示

1)属性(properties)

(1)dbconfig.properties

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis
jdbc.username=root
jdbc.password=root123

(2)properties属性

	<!-- properties:引入外部properties配置文件的内容 -->
<!-- url:引入网络路径或者磁盘路径下的资源 -->
<!-- resource:引入类路径下的资源 -->
<properties resource="dbconfig.properties" ></properties>

(3)使用properties配置mybatis-config.xml

	<!-- properties:引入外部properties配置文件的内容 -->
<!-- url:引入网络路径或者磁盘路径下的资源 -->
<!-- resource:引入类路径下的资源 -->
<properties resource="dbconfig.properties" ></properties> <environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<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>
</environment>
</environments>

2)设置(settings)

(1)mapUnderscoreToCamelCase

	<!-- settings:包含很多设置项 -->
<!-- setting:用来选择设置中各项设置 -->
<!-- name:设置项名 -->
<!-- value:设置项取值 -->
<settings>
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>

3)类型别名(typeAliases)

注意:MyBatis已经为许多常见的 Java 类型内建了相应的类型别名。它们都是大小写不敏感的,我们在起别名的时候千万不要占用已有的别名。

我们目前最新的mybatis推荐使用全限定类名书写。

	<!-- typeAliases:别名处理器,可以为java类型起别名.别名不区分大小写 emp 和 Emp是一样的 -->
<!-- typeAlias:为java类型起别名 -->
<!-- type:指定要起别名的类型全类名;默认别名就是类名小写 -->
<!-- alias:指定新的别名 -->
<!-- package:指定一个包名,为该包下所有类批量起别名 -->
<!-- 批量起别名的情况下,使用@Alias注解为某个类型指定新的别名 如:@Alias("empp") 起别名为empp-->
<typeAliases>
<!-- <typeAlias type="com.atguigu.mybatis.bean.Employee" alias="emp"/> -->
<package name="com.atguigu.mybatis.bean" />
</typeAliases>

4)类型处理器(typeHandlers)

无论是 MyBatis 在预处理语句(PreparedStatement)中设置一个参数时,还是从结果集中取出一个值时, 都会用类型处理器将获取的值以合适的方式转换成 Java 类型。

• 日期和时间的处理,JDK1.8以前一直是个头疼的问题。我们通常使用JSR310规范领导者Stephen Colebourne创建的Joda-Time来操作。1.8已经实现全部的JSR310规范了。

• 日期时间处理上,我们可以使用MyBatis基于JSR310(Date and Time API)编写的各种日期时间类型处理器。

• MyBatis3.4以前的版本需要我们手动注册这些处理器,以后的版本都是自动注册的

5)对象工厂(objectFactory)

6)插件(plugins)

插件是MyBatis提供的一个非常强大的机制,我们可以通过插件来修改MyBatis的一些核心行为。插件通过动态代理机制,可以介入四大对象的任何一个方法的执行。

7)环境配置(environments)

<!-- environments:配置多种环境;default标签可以指定使用的环境,可以达到快速切换环境的效果 -->
<!-- environment 配置一个具体的环境信息;id代表当前环境的唯一标识;必须有两个标签transactionManager/type -->
<!-- transactionManager:事务管理器 -->
<!-- type:事务管理器的类型;JDBC(JdbcTransactionFactory)|MANAGED(ManagedTransactionFactory)|自定义事务管理器(实现TransactionFactory接口.type指定为全类名) -->
<!-- JDBC:使用了 JDBC 的提交和回滚设置,依赖于从数据源得到的连接来管理事务范围 -->
<!-- MANAGED:不提交或回滚一个连接、让容器来管理事务的整个生命周期(比如 JEE 应用服务器的上下文) -->
<!-- 自定义:实现TransactionFactory接口,type=全类名/别名 -->
<!-- dataSource:数据源 -->
<!-- type:数据源类型;UNPOOLED(UnpooledDataSourceFactory)|POOLED(PooledDataSourceFactory)|JNDI(JndiDataSourceFactory)|自定义数据源(实现DataSourceFactory接口,type是全类名) -->
<!-- UNPOOLED:不使用连接池 -->
<!-- POOLED:使用连接池 -->
<!-- JNDI: 在EJB 或应用服务器这类容器中查找指定的数据源 -->
<!-- 自定义:实现DataSourceFactory接口,定义数据源的获取方式 -->
<!-- 实际开发中我们使用Spring管理数据源,并进行事务控制的配置来覆盖上述配置 -->
<environments default="development">
<environment id="test">
<transactionManager type="JDBC" />
<dataSource type="">
<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>
</environment> <environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<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>
</environment>
</environments>

8)数据库厂商标识(databaseIdProvider)

MyBatis 可以根据不同的数据库厂商执行不同的语句.

(1)添加select

	<select id="getEmpById" resultType="com.atguigu.mybatis.bean.Employee" >
select * from tbl_employee where id = #{id}
</select> <select id="getEmpById" resultType="com.atguigu.mybatis.bean.Employee" databaseId="mysql" >
select id,email from tbl_employee where id = #{id}
</select> <select id="getEmpById" resultType="com.atguigu.mybatis.bean.Employee" databaseId="oracle">
select * from tbl_employee where id = #{id}
</select>

(2)添加databaseIdProvider

	<!-- databaseIdProvider:持多数据库厂商 -->
<!-- type="DB_VENDOR":VendorDatabaseIdProvider -->
<!-- type:得到数据库厂商的标识(驱动getDatabaseProductName()),mybatis就能根据数据库厂商标识来执行不同的sql -->
<databaseIdProvider type="DB_VENDOR">
<!-- 为不同的数据库厂商起别名 -->
<property name="MySQL" value="mysql"/>
<property name="Oracle" value="oracle"/>
<property name="SQL Server" value="sqlserver"/>
</databaseIdProvider>

(3)配置properties(数据库链接信息)

#Mysql
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis
jdbc.username=root
jdbc.password=root123 #Oracle
orcl.driver=oracle.jdbc.OracleDriver
orcl.url=jdbc:oracle:thin:@localhost:1521:orcl
orcl.username=scott
orcl.password=123456

(4)配置environments

	<environments default="dev_mysql">
<environment id="dev_mysql">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<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>
</environment> <environment id="dev_oracle">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="${orcl.driver}" />
<property name="url" value="${orcl.url}" />
<property name="username" value="${orcl.username}" />
<property name="password" value="${orcl.password}" />
</dataSource>
</environment>
</environments>

9)映射器(mappers)

(1)mybatis-config.xml

	<!-- !!!!!!!!!非常重要!!!!!!!!!!!! -->
<!-- 将我们写好的sql映射文件<EmployeeMapper.xml>一定要注册到全局配置文件中 -->
<!-- mappers:将sql映射注册到全局配置中 -->
<!-- mapper:注册一个sql映射 -->
<!-- resource(使用相对于类路径的资源引用):引用类路径下的sql映射文件 org/mybatis/builder/AuthorMapper.xml-->
<!-- url(使用完全限定资源定位符):引用网路路径或者磁盘路径下的sql映射文件 file:///var/mappers/AuthorMapper.xml -->
<!-- class(使用映射器接口实现类的完全限定类名):引用(注册)接口 org.mybatis.builder.AuthorMapper -->
<!-- 存在sql映射文件:映射文件名必须和接口同名,需配置文件与接口文件同一目录下(com.atguigu.mybatis.dao.EmployeeMapper.java)和(com.atguigu.mybatis.dao.EmployeeMapper.xml -->
<!-- 不存在sql映射文件:所有的sql都是利用注解写在接口上(com.atguigu.mybatis.dao.EmployeeMapperAnnotation) -->
<!-- package:批量注册sql映射 -->
<mappers>
<!-- <mapper resource="com/batis/mapper/EmployeeMapper.xml" /> -->
<!-- <mapper class="com.atguigu.mybatis.dao.EmployeeMapperAnnotation"/> -->
<package name="com.atguigu.mybatis.dao"/>
</mappers>

(2)select注解

public interface EmployeeMapperAnnotation {
@Select("select * from tbl_employee where id=#{id}")
public Employee getEmpById(Integer id);
}

参考文档:https://mybatis.org/mybatis-3/zh/configuration.html

02、MyBatis XML配置的更多相关文章

  1. Mybatis XML配置

    Mybatis常用带有禁用缓存的XML配置 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE ...

  2. 笔记:MyBatis XML配置详解

    MyBatis 的配置文件包含了影响 MyBatis 行为甚深的设置(settings)和属性(properties)信息.文档的顶层结构如下: configuration 配置 properties ...

  3. Mybatis——xml配置

    注:该文档参考了 https://mybatis.org/mybatis-3/zh/configuration.html 狂神的视频:https://www.bilibili.com/video/BV ...

  4. Mybatis XML配置(转载)

    原文地址:https://www.w3cschool.cn/mybatis/f4uw1ilx.html Mapper XML 文件 MyBatis 的真正强大在于它的映射语句,也是它的魔力所在.由于它 ...

  5. MyBatis XML配置properties

    来源:https://www.w3cschool.cn/mybatis/7zy61ilv.html XML 映射配置文件 MyBatis 的配置文件包含了影响 MyBatis 行为甚深的设置(sett ...

  6. 笔记:MyBatis XML配置-Settings 完整属性表

    设置参数 描述 有效值 默认值 cacheEnabled 该配置影响的所有映射器中配置的缓存的全局开关. true | false true lazyLoadingEnabled 延迟加载的全局开关. ...

  7. 笔记:MyBatis XML配置-typeAliases 内建别名表

    别名 映射的类型 _byte byte _long long _short short _int int _integer int _double double _float float _boole ...

  8. 笔记:MyBatis XML配置-typeHandlers 默认类型处理器

    类型处理器 Java 类型 JDBC 类型 BooleanTypeHandler java.lang.Boolean, boolean 数据库兼容的 BOOLEAN ByteTypeHandler j ...

  9. 聊聊、Mybatis XML

    引入相应的依赖包 <dependency><groupId>org.mybatis</groupId><artifactId>mybatis-sprin ...

随机推荐

  1. Django之AJAX简单使用

    AJAX简介: AJAX(Asynchronous Javascript And XML)翻译成中文就是“异步的Javascript和XML”.即使用Javascript语言与服务器进行异步交互,传输 ...

  2. mysql小白系列_04 binlog(未完)

    mysql打开.查看.清理binlog 1.开启日志 log_bin=/var/lib/mysql/mysql-bin mysql> show variables like '%log_bin% ...

  3. 存储系列之 RAID技术原理简介

    引言:RAID技术是现代大规模存储的基础,“基础(技术)是拿来革命的”.我查raid相关资料时,查布尔运算,竟然一路查到“香农原理”,这不是有个视频中HW的任总提到的吗,多基础的东西,任总却毫不含糊, ...

  4. 基于腾讯云搭建squid代理服务器

    本文主要介绍下在腾讯云上搭建squid代理服务器,用于访问国外网站或者为爬虫提供代理ip,以及简单介绍下如何基于腾讯云提供的SDK,批量开启或者销毁代理服务器实例. Squid是一个高性能的代理缓存服 ...

  5. Java 对象的继承,抽象类,接口

    子父级继承 关键字 extends 首先创建一个父类 class Fu { String name; int a=1; public void word() { System.out.println( ...

  6. eatwhatApp开发实战(十四)

    之前我们就输入框EditText做了优化,而这次,我们为app添加拨打电话的功能. 首先是布局,将activity_shop_info.xml中对应的电话那一栏进行重新设计: <Relative ...

  7. 百万年薪架构师一文整理RabbitMQ、ActiveMQ、RocketMQ、Kafka

    一般来说,大型应用通常会被拆分成多个子系统,这些子系统可能会部署在多台机器上,也可能只是一台机器的多个进程中,这样的应用就是分布式应用.在讨论分布式应用时,很多初学者会把它和集群这个概念搞混,因为从部 ...

  8. MyBatis主配置文件

    MyBatis的使用非常简单,使用流程整体可以分成以下四步: public class UserDaoTest { private SqlSessionFactory sqlSessionFactor ...

  9. Rocket - interrupts - Crossing

    https://mp.weixin.qq.com/s/nSX4prXFb4K5GSUhPtOUCg 简单介绍Crossing的实现. 1. IntXing 这是一个LazyModule: 1) 参数 ...

  10. Chisel3 - util - Valid

    https://mp.weixin.qq.com/s/L5eAwv--WzZdr-CfW2-XNA   Chisel提供的Valid接口.如果valid为置1,则表明输出的bits有效:反之,则输出无 ...