[000-01-018].第04节:Mybatis核心配置文件详解

我的后端学习大纲

MyBatis学习大纲


1.核心配置文件内容举例

<configuration>
    <properties resource="jdbc.properties"></properties>
    <settings>
        <setting name="mapUnderscoreToCamelCase" value="true"/>
        <setting name="lazyLoadingEnabled" value="true"/>
    </settings>
    <typeAliases>
        <!--以包为单位,设置改包下所有的类型都拥有默认的别名,即类名且不区分大小写-->
        <package name="com.jianqun.pojo"/>
    </typeAliases>
    <environments default="mysql_test">
        <environment id="mysql_test">
            <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>
 
    <mappers>
        <package name="com.jianqun.mapper"/>
    </mappers>
</configuration>

2.核心配置文件中,各个标签的书写顺序:

properties
settings?,
typeAliases,
typeHandlers,
objectFactory,
objectWrapperFactory,
reflectorFactory,
plugins,
environments,
databaseIdProvider,
mappers

3.核心配置文件中各标签的含义:

3.1.标签configuration

  • 1.configuration是根标签,表示配置信息

3.2.标签properties:

a.properties功能介绍:

  • 1.引入properties文件,此时就可以${属性名}的方式访问属性值

b.实现properties文件的引入:

  • 1.创建jdbc.properties数据库连接配置文件
    在这里插入图片描述
  • 2.引入配置文件:
    	<!--引入properties文件,此时就可以${属性名}的方式访问属性值-->
        <properties resource="jdbc.properties"></properties>
    
  • 3.更改datasource
    <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>
    

c.当properties中使用url的时候,下面方式最好不用:

  • 1.这种方式可移植性太差了,最好不用
    在这里插入图片描述

3.3.标签setting :

  • 1.将表中字段的下划线自动转换为驼峰
    <settings>
    	 <!--将表中字段的下划线自动转换为驼峰-->
    	 <setting name="mapUnderscoreToCamelCase" value="true"/>
    	 <!--开启延迟加载-->
    	 <setting name="lazyLoadingEnabled" value="true"/>
    </settings>
    

3.4.标签typeAliases:

  • 1.typeAlias:设置某个具体的类型的别名

a.属性type:

  • 1.需要设置别名的类型的全类名:<typeAlias type="com.jianqun.mybatis.bean.User"></typeAlias>

b.属性alias:

  • 1.设置此类型的别名,若不设置此属性,该类型拥有默认的别名,即类名;且不区分大小写
  • 2.若设置此属性,此时该类型的别名只能使用alias所设置的值:<typeAlias type="com.jianqun.mybatis.bean.User" alias="abc"></typeAlias>
  • 3.以包为单位,设置该包下所有的类型都拥有默认的别名,即类名且不区分大小写:<package name="com.jianqun.mybatis.bean"/>

3.5.标签environments:

  • 1.environments表示多个环境,以“s”结尾表示复数,也就是说mybatis的环境可以配置多个数据源。

a.default属性:

  • 1.表示默认使⽤的是哪个环境,default后⾯填写的是environment的id
  • 2.default的值只需要和environment的id值⼀致即可

2.5.标签environment:

  • 1.具体的环境配置主要包括:事务管理器的配置 + 数据源的配置

a.属性id

  • 1.给当前环境⼀个唯⼀标识,该标识⽤在environments的default后⾯,⽤来指定默认环境的选择
    在这里插入图片描述
  • 2.单元测试:
    在这里插入图片描述
    在这里插入图片描述

3.6.标签transactionManager

a.作用:

  • 1.标签:transactionManager:设置事务管理方式

b.属性1:type:

  • 1.设置事务管理方式,指定事务管理器具体使用什么方式,可选值包括两个,type="JDBC|MANAGED"大小写写无所谓,不区分大小写
    • type=“JDBC”:设置当前环境的事务管理都必须手动处理 。使用JDBC原生的事务管理机制,底层原理:事务开启conn.setAutoCommit(false); ...处理业务...事务提交conn.commit();
    • type=“MANAGED”:设置事务被管理,交给其它容器来管理事务,例如spring中的AOP、WebLogic、JBOSS等。如果没有管理事务的容器,则没有事务。没有事务的含义:只要执行一条DML语句,则提交一次
  • 2.底层原理:Mybatis的底层是有两个实现类,当是jdbc类型的时候,就会实例化JdbcTransaction对象 ,是MANAGED的时候,就会实例化managedTransaction对象
    在这里插入图片描述

3.7.标签dataSource

  • 1.标签:dataSource:设置数据源,为程序提供Connection(连接)对象。
  • 2.数据源是一套规范,JDK中有这套规范:java.sql.DataSource
  • 3.我们自己也可以基于这个规范编写数据源组件,只要实现这套接口规范(java.sql.DataSource)就可以了
  • 4.常见的数据源组件【常见的数据库连接池】:druid、c3p0、 dbcp等

a.type属性:

  • 1.dataSource的type属性可以来设置数据源的类型,来指定具体使用的数据库连接池的策略
  • 2.type属性可选值包括三个,type="POOLED|UNPOOLED|JNDI"
    • type=“POOLED”:`使用mybatis自己实现的数据库连接池
    • type=“UNPOOLED”:不使用数据库连接池,即每次使用连接都需要重新创建
    • type=“JNDI”:集成第三方的数据库连接池
      在这里插入图片描述
  • 5.JNDI是一套规范,大部分的web容器都实现了这个规范,如Tomcat、webLogic、WebSphere,这些都实现了这个规范。 如果不是web或者maven的war⼯程,JNDI是不能使⽤的。

b.POOLED连接池和非连接池UNPOOLED测试:

  • 1.创建会话:
    在这里插入图片描述
  • 2.当不使用连接池的时候:
    在这里插入图片描述
    在这里插入图片描述
  • 3.当使用连接池的时候:
    在这里插入图片描述
    在这里插入图片描述

c.连接池的好处:

在这里插入图片描述
在这里插入图片描述


3.8.标签property:

  • 0.具体的介绍可以参照官网

  • 1.property可以是(UNPOOLED):
    在这里插入图片描述

  • 2.property可以是(type=“POOLED"时):
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 3.property可以是(type=“JNDI"时):
    在这里插入图片描述

    • initial_context 这个属性⽤来在 InitialContext 中寻找上下⽂(即initialContext.lookup(initial_context))这是个可选属性,如果忽略,那么将会直接从InitialContext 中寻找 data_source 属性。
    • data_source 这是引⽤数据源实例位置的上下⽂路径。提供了 initial_context 配置时会在其返回的上下⽂中进⾏查找,没有提供时则直接在 InitialContext 中查找。
      在这里插入图片描述

3.9.标签mappers

  • a.mappers是引入映射文件用的
  • b.映射文件是和mapper接口是相互对应的,而一个mapper接口是和一张表对应的,一张表对应着一个实体类,也就是一个实体类对应一个mapper接口,而mapper接口又应着我们的映射文件,所以说:当表增多的时候,mapper接口就多,那么接口的映射文件也会增多;
    • 为了解决这个问题,我们就是可以以包的形式来引入映射文件
    • 注意:以包为单位,将包下所有的映射文件引入核心配置文件,此方式必须保证mapper接口和mapper映射文件必须在相同的包下
     <!--引入映射文件-->
        <mappers>
            <mapper resource="UserMapper.xml"/>
            <!--
            	以包为单位,将包下所有的映射文件引入核心配置文件 
            	注意:此方式必须保证mapper接口和mapper映射文件必须在相同的包下 
            -->
            <package name="com.jianqun.mybatis.mapper"/>
        </mappers>
    

4.核心配置文件中的mapper标签:

  • 1.明确mapper标签的具体位置是在哪里:
    在这里插入图片描述
  • 2.mapper知识点:
    在这里插入图片描述
  • 3.代码测试:
    在这里插入图片描述

5.MyBatis中的别名机制:

1.核心配置文件中未设置别名之前:

在这里插入图片描述

设置别名之后:

  • 1.核心配置文件中设置别名:alaias属性可以省略,省略后,别名默认是类名
    在这里插入图片描述
  • 2.设置成别名:别名是不区分大小写的
    在这里插入图片描述
  • 3.namespace这里不能写别名
    在这里插入图片描述

3.更方便的写别名的方式:

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值