简单介绍:
需要我们编写的配置文件主要有三个,分别是核心配置文件(mybatis-config.xml),数据库连接信息文件(db.properties),SQL语句映射文件(Mappers);这些配置文件大多数都是以xml文件的形式进行编写的,所以其中包含了很多的标签,也称为他们的元素,之前我们只是从官网复制这些文件的模板文件并进行简单的修改进行使用,并不知道这些文件的中的元素的具体含义,那么接下来就是对这些文件中出现过的那些元素进行比较详细的讲解。
数据库连接信息文件db.propertioes文件:
这个文件存放的是关于数据库连接相关的信息,其中常用的有driver,url,username,password的配置信息,如果之前配置过数据库连接池,会发现这个配置文件在数据库连接池中也出现过。
这种以propertioes文件结尾的文件的数据存储形式是以键值对的形式存放,是以键等于值的形式存储。所以当我们在其他的文件中引用这种文件的时候只需要在需要值的地方动态的引用她的键就可以,非常的方便维护和修改。
下面是正常的简单配置数据库连接信息的文件:
核心配置文件mybatis-config.xml:
mybatis的核心配置文件配置了mybatis的全局信息,以及能够修改默认行为的属性。
mybatis的核心配置文件的主要元素如下:
其中<configuration>元素是所有元素的根元素,所有的元素都要写在它下面。并且这些元素的顺序不能乱写,一定要根据上面的顺序从上到下开始编写,否则在编写配置文件的时候会报错:
不过也不同特意的去记住这些元素的顺序,在我们报错之后,他会提醒我们正确的顺序并且告诉我们是哪一个元素的位置错了,我们只需要对照修改就可以了。
接下来我们就比较详细的介绍一下这些每一个元素:
<properties>:
该元素的作用是将外部的配置文件引入到此配置文件中。
比如我们的数据库连接信息文件都是存放在db.properties文件中,我们就可以使用这个元素引入这个文件,然后在需要db.properties文件中信息的地方使用动态引入的方式。
动态引入的语法为:${key}
<settings>:
这个元素的作用是改变MyBatis运行时候的行为,比如开启二级缓存,开启延时加载,懒加载等。
关于这个标签的作用我们在之后学习过缓存机制和懒加载机制之后再深入了解这个标签的作用
<typeAliases>:别名映射
在我们将查询结果集输出到一个Java的实体类的时候,需要在resultType中输入实体类的全限定类名,即必须写入完整的包名和类名,但是在我们的开发中,有一些包名就非常的长,写起来很麻烦而且也很容易就写错。这个标签的作用就是帮我们简化这个写法,在配置完成之后,我们就可以简化为直接写实体类的类名的方式就可以了。
当我们映射的实体类有多个的时候,可以配置多个标签来达到效果:
当我们映射的实体类非常多的时候,一个一个的写就非常的麻烦,这时候我们就可以以包扫描器的方式来添加我们的别名映射:
当我们进行这样的配置之后,当我们需要这个包下面的实体类进行映射的时候,都可以直接写类名就可以进行自动映射
<typeHandlers>:
<objectFacetory>:
<plugins>:
<environments>:
MyBatis支持配置多套运行环境,比如开发环境,生产环境,测试环境等;可以灵活的选择不同的配置,从而将SQL映射到不同运行环境的数据库中。
<enbironment>
不同的运行环境可以通过<environment>子元素来配置,但是不管有多少套运行环境,都必须要明确选择出当钱要用的唯一的一个运行环境。
MyBatis的运行环境信息包括事务管理器和数据源。通过<environment>的两个子元素,<transactionManger>来配置运行环境的事务管理器,<dataSource>元素用来配置环境的数据源信息。
<transactionManager>:
<transactionManger>来配置运行环境的事务管理器,可以配置两种类型的事务管理器,其中一种是JDBC:直接使用JDBC的提交和回滚设置,依赖于从数据源得到的连接来管理事务的作用域。还有一种是MANAGED:此配置不提交或回滚一个链接,而是让容器来管理事务的整个生命周期。
如果项目使用的是Spring+MyBatis,则没有必要在MyBatis中配置事务管理器,因为在实际开发中会使用Spring自带的管理器来实现事务的管理。
<dataScurce>:
<dataSource>元素用来配置环境的数据源信息。对于数据源的配置,MyBatis提供了三种数据源类型,分别是:
UNPOOLED:表示数据源为无连接池类型。适用于对性能要求不高的简单应用程序
POOLED:表示数据源为连接池属性。POOLED使并发Web应用可以快速响应请求,是当前比较流行的数据源配置类型。
JNDI:表示数据源可以在FJB或应用服务器容器中使用。
切换运行环境的方法:
一种是通过更改<environments>的default属性的值的方式来切换运行那一套环境
还有一种就是在编程的时候,将SqlSessionFactoryBuilder()方法的第二个参数修改成运行环境id的值的方式来切换运行环境:
<mappers>:引入映射文件
在MyBatis的核心配置文件中,<mappers>用于引入MyBatis映射文件。映射文件包含了POJO对象和数据表之前的映射关系,MyBatis通过核心配置文件中的<mappers>元素找到映射文件并解析其中的映射关系
使用<mappers>引入映射文件的方式有四种:
1.使用类路径引入:
2.使用本地文件路径引入:
3.使用接口类引入:
使用接口类引入需要提前准备一个和映射文件同一个包下面的接口,并且接口名必须与文件名相同,且接口中的方法名与映射文件中的唯一标识的名字相同,在下一章的接口化开发中会详细的介绍这种方法的使用:
4.使用包名导入
SQL语句映射文件:
MyBatis真正强大的地方是可以配置SQL映射文件。
SQL语句映射文件的常用元素:
<mappers>:
mappers元素是映射文件的根元素,其他元素都是她的子元素。mappers有一个属性叫做namespace,类似于我们的包,是用来当SQL映射的id属性相同时区分SQL映射的。
<cache>:
配置给定命名空间的缓存
<chache-ref>:
从其他命名空间引用缓存配置
<select>:
用于映射查询语句,它可以从数据库中查询数据并返回。它有四个常用的属性,idSQL语句的唯一标识,parametType表示参数的类型,resultType表示查询结果集映射到的POJO实体类的全限定类型,如果之前配置了类名映射,可以直接写类名。
<insert>:
<insert>用于映射插入语句,在执行完<insert>元素中定义的SQL语句后,会返回插入记录的数量。该元素有两个常用属性,id表示SQL语句的唯一标识,parameterType表示数据来源的POJO实体类。
注意在使用的时候,插入数据的时候要使用动态引入的方式,因为数据来源是来自于POJO的实体类,所以要动态的引入实体类中的属性的名称
<update>:
<update>用于映射更新语句,它可以更新数据库中的数据,在执行完元素中定义的SQL语句之后,会返回更新的记录数量。
<delete>:
<delete>用来映射删除语句,在执行完<delete>元素中的SQL语句之后,会返回删除的记录数量。
还有<sql>和<resultMap>属性由于比较的常用和重要我们在下一章节进行单独的讲解