详解Mybatis框架的的主配置文件------mybatis.xml文件

    今天,我们来详细谈谈mybatis的主配置文件,在上一篇博文中我们已经对这个文件的命名和位置进行了详细的阐述,今天我们主要是说说这个文件中的标签的作用和用法.

    在一般的开发过程中,我们通常会把数据库的四大连接参数保存在一个单独的文件中,我个人一般习惯把它们方法一个名为jdbc.properties的文件中,文件的位置一般在src下,这个文件中的数据是一键值对的形式出现的,但是我们最好把它的键设置成二级或者是多级的,而不要是一级,否则程序在运行的过程中会初心异常,然后我们可以在主配置文件中通过<properties resource="这个位置出现的是你要注册的文件的名称">对这个文件进行注册,这样我们就可以在在主配置文件中通过EL表达式加载jdbc.properties的文件信息.

    <typeAlisas>标签的作用就是给类起别名的,可以方便我们的开发,通常适用场景是当映射文件中的类的全名太长的时候,通过读<configuration>根标签的子标签,我们可以得知,此标签的顺序是在<properties>标签之后,<envoronment>标签之前,<typeAlisas>标签含有两个个子标签.<package><typeAlisas>

    起别名的具体操作如下,<typeAlisas type="类的全限定名称而不是类的全路径名称" alisa = "别名一般写的是类的简单名"> 这样我们就可以在映射文件中使用类的简单名代替类的全限定名称,   当我们的实体类的数目过多的时候,我们通过这种方式来给实体类起别名,同样比较麻烦.这个就是可以使用<package>标签,集体操作如下:

    <package name = "包的全限定名称">,作用是为指定包中的所有类指定别名,别名默认的是类的简单名.并且该标签可以使用多次,如果你的实体类分布在不同的包中,我们同样可以使用这种方法.只不过是多次使用该标签而已.

    <ervironments>标签下可以有多个<environment>b标签,它的作用是可以选择不同的运行环境,通过
<envoronment>的ID来调用,比如我们可以为应用配置不同的数据库,就可以通过使用该标签.

    <transationManager type ="jdbc"/>该标签的作用就是指定事务管理器,type的取值有两个,分别是jdbc:jdbc事务管理器,(默认的),MANAGED:它的作用是使用第三方管理器,例如使用Spring的事务管理器,此处暂时不做深入的了解.

    <dataSource type="POLLED"/>该标签的作用是指定数据源类型,常用的取值有三个,POOLED:使用的是连接池技术,

UNPOOlED :不使用连接池技术.JNDI:(Java Naming-Dirctory Interface java命名目录接口),这个是一个容器.

    映射文件在主配置文件中的注册方式有3种:

(1)<mapper resourse = "映射文件的全限定名称"/>

(2)<mapper url ="file:+映射文件的全路径名称">此标签适合注册存放在本地文件系统的的情况,但是不常用.可以了解一下.

(3)第三种在使用的时候有三个要求:

(1)映射文件要与Dao接口在同一个包下

(2)映射文件名要和Dao接口的实现类的简单类名保持相同

(3)映射文件中的<mapper>标签的namespace属性值应该填写的是Dao接口的全限定名称(全名称)

当有多个映射文件时,我们需要为每一个映射文件注册,就需要写多个<mapper>,这个在开发的过程中是一个比较痛苦的过程,此时我们就可以使用<package>标签,<package name = "Dao接口所在的包名"/>可以使用多次,不过它的使用要求有四点:

(1)映射文件要与Dao接口在同一个包下

(2)映射文件名要和Dao接口的实现类的简单类名保持相同

(3)映射文件中的<mapper>标签的namespace属性值应该填写的是Dao接口的全限定名称(全名称)

(4)使用的必须是动态的mapper

============================================================================

                                                                映射文件mapper.xml浅析

(1)我们的标签中可以不使用property属性,应为我们在传参数的时候,框架已经知道了我们的参数的类型.

(2)如果Sql语句中设计到了Values,那么其内容必须是在"#{}"填写,其内容可以是对象的属性名,如果参数是基本类型,那么可以写任意值,若果参数是map类型,还可以写map的key值,如果参数是map的key,但是key的类型是对象,我们还可以写map的key值得属性值.




    注意:我们可以获取SQLSession的对象的过程包装成工具类,和JDBC获取Connection的过程类似,在工具类中,我们一般把方法定义成静态的,并且工具类中的异常信息我们一般有两种处理方法,一是使用throws把异常抛给调用者,二是使用try/catch异常信息内部消化,我们一般使用throws来处理工具类中的异常,严格来说,工具类并不是我们的业务类,我们如果采用了try/catch,那么在使用的过程中,如果,工具类出现了异常,便会把异常信息自己消化,然而我们的调用者却不知道工具类发生了异常,这种情况非常不利于代码的后期维护.

    

    这里介绍一个概念:

重量级组件:如果以个组件在创建和销毁的过程中都会消耗大量的系统资源(一般包括的是CPU和运行内存),这样的组件就是SQLSessionFactory组件.


猜你喜欢

转载自blog.csdn.net/dawiebazhanlang/article/details/81047483