Mybatis全局配置介绍

【mybatis全局配置介绍】

mybatis-config.xml,是MyBatis的全局配置文件,包含全局配置信息,如数据库连接参数、插件等。整个框架中只需要一个即可。

1、mybatis全局配置文件是mybatis框架的核心配置,整个框架只需一个;
2、mybatis全局配置文件中的配置顺序:注意如果配置多项,必须按照以下顺序进行配置
    properties:属性配置
    settings:设置
    typeAliases:类型别名设置
    typeHandlers:类型处理器
    enviroments:环境配置
        environment(环境变量)
        transactionManager(事务管理器)
        dataSource(数据源)
    mappers:映射器

properties(属性)【作用】

1、加载外部的java资源文件(properties文件);
2、通过子标签property设置属性;

【需求】

使用properties属性,配置数据库连接参数;
【1】property标签设置
1、通过properties的子标签设置属性;
2、使用${key}获取设置的属性值;
【2】加载外部properties

第一步:新建资源文件

新建jdbc.properties文件,将连接参数抽取到配置文件中:

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/db4
username=root
password=1234
第二步:引入资源文件

在mybatis-config.xml文件中加载jdbc.properties文件;通过properties的属性resource引入;

【注意事项】:子标签和属性resource同时加载一个变量,先加载子标签,然后在加载resource关联的外部文件的值,那么子标签中的内容会被覆盖。此时子标签存在就没有意义了。

settings(设置)

【应用场景】

从数据库中查到数据的字段名user_name和实体类属性名userName,不一致,导致查到的数据无法封装到实体类中。
但是,实体类中的属性userName符合驼峰命名,数据库字段名user_name符合数据库经典字段命名。

如果此时直接查询数据,那么用户名是null。

【1】配置驼峰映射

在mybatis-config.xml中做如下配置:

settings设置:
mapUnderscoreToCamelCase :驼峰自动映射配置 ,值是true表示开启驼峰自动映射。满足条件:数据库字段名  user_name   ,实体类属性名 userName
<!--
    2、settings设置:
 mapUnderscoreToCamelCase :驼峰自动映射配置 满足条件:数据库字段名  user_name   ,实体类属性名 userName
 -->
<settings>
  <setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>

1、开启驼峰自动映射的作用:user_name ====> userName;

2、注意事项:字段名必须符合user_name格式,属性名必须符合驼峰命名规则;

【2】解决字段名和属性名不一致的方法

如果数据库字段名和属性名不一致,或者是也不满足上面的命名规则。可以通过在SQL语句中为字段名取别名进行映射。

typeAliases(类型别名)

【1】作用

类型别名是给类的全限定名称(包名.类名) 取一个短名称。存在的意义仅在于用来减少类完全限定名的冗余。例如:

这些全限定类名可通过设置类型别名--短名称代替。类型别名的设置有以下几种方式:

方式:使用typeAliases标签的子标签package包扫描映射别名;

【2】应用

【方式】package

扫描指定包下的所有类,扫描之后的别名就是类名,大小写不敏感(不区分大小写),建议使用的时候和类名一致。

设置别名:

<!--
        三、typeAliases(类型别名)
            【1】作用:给类的全限定名称 取一个短名称   com.heima.mybatis.pojo.User==>User
            【2】用法:
                1、单独取别名:<typeAlias type="com.heima.mybatis.pojo.User" alias="User"/>
                2、批量取别名:<package name="com.heima.mybatis.pojo"/> 扫描到当前包下的所有类
                              类的类名==》别名
    -->
    <typeAliases>

        <!--扫描com.itheima.sh.pojo包下所有的类,类名直接作为别名(别名不区分大小写)-->
        <package name="com.itheima.sh.pojo"/>
    </typeAliases>

【内置别名】

这是一些为常见的 Java 类型内建的相应的类型别名。它们都是不区分大小写的,注意对基本类型名称重复采取的特殊命名风格。

别名

映射的类型

_byte

byte

_long

long

_short

short

_int

int

_integer

int

_double

double

_float

float

_boolean

boolean

string

String

byte

Byte

long

Long

short

Short

int

Integer

integer

Integer

double

Double

float

Float

boolean

Boolean

date

Date

decimal

BigDecimal

bigdecimal

BigDecimal

object

Object

map

Map

hashmap

HashMap

list

List

arraylist

ArrayList

collection

Collection

iterator

Iterator

【代码演示】

<!--parameterType="int" 表示sql语句参数id的类型,int是Integer的别名-->
    <select id="queryById" resultType="user" parameterType="int">
        select * from user where id = #{id}
    </select>

typeHandlers(类型处理器)【了解】

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

<!--
        四、typeHandlers(类型处理器)
            数据库数据类型:varchar    ===StringTypeHandler===> 实体类:String
            数据库数据类型:double   DoubleTypeHandler  实体类中的数据: java.lang.Double 
-->

environments【了解】

  MyBatis 可以配置成适应多种环境,例如,开发、测试和生产环境需要有不同的配置;
尽管可以配置多个环境,每个 SqlSessionFactory 实例只能选择其一。
虽然,这种方式也可以做到很方便的分离多个环境,但是实际使用场景下,我们更多的是选择使用spring来管理数据源,来做到环境的分离。
  父标签: environments(环境配置)
            子标签:
                environment(环境变量)
                transactionManager(事务管理器)
                dataSource(数据源) 
【1】默认环境设置

第一步:在environments标签中配置多个environment,通过属性default指定一个默认环境配置;

第二步:在构建SqlSessionFactory时,可指定具体环境,如果不指定就使用默认的环境配置;

【2】指定环境设置

第一步:在environments中配置多个环境

第二步:在构建SqlSessionFactory时,通过environment的id指定环境

mappers(映射器)

mappers(映射器):

UserMapper.xml====>UserMapper.java接口 关联.

作用:维护接口和映射文件之间的关系.

既然 MyBatis 的行为已经由上述元素配置完了,我们现在就要定义 SQL 映射语句了。 但是首先我们需要告诉 MyBatis 到哪里去找到这些语句。 Java 在自动查找这方面没有提供一个很好的方法,所以最佳的方式是告诉MyBatis 到哪里去找映射文件。 你可以使用相对于类路径的资源引用, 或完全限定资源定位符(包括 file:/// 的 URL),或类名和包名等。方式如下:

使用方式: 1、加载映射文件,关联UserMapper.java接口 【1】 从src下加载映射文件;

2、加载接口,关联映射文件 条件:1、接口名和映射文件名保持一致;2、路径保持一致;【2】批量加载class:

方式一:加载映射文件方式resource

在mybatis-config.xml文件中,通过mapper标签的resource属性引入当前工程src下的映射文件。

[缺点】

有多少个映射文件就要配置多少次,麻烦。

方式二:加载接口,关联映射文件方式package

在mybatis-config.xml中,开启包扫描:扫描包下的所有接口和对应的映射文件。

条件:1、接口名和映射文件名保持一致;2、路径保持一致;

在mybatis-config.xml配置mapper接口的全路径:

  <mappers>
        <package name="com.itheima.sh.dao"/>
    </mappers>

【原理】:

扫描目标包目录下的mapper接口,并按照class的方式找到接口对应的映射文件。

其条件和设置class的条件一样:

1、映射文件和mapper接口在同一个目录下
2、文件名必须一致
3、映射文件的namespace必须和mapper接口的全路径保持一致

【缺点】:

1、需要遵守的条件太多
2、mapper.xml和mapper.java没有分离。
【mappers小结】:
mappers:配置映射文件
    mapper
        resource:配置类路径下的映射文件(掌握)

       package:配置接口包扫描(掌握)
            1、要求接口和映射文件在同一个包下
            2、要求接口和映射文件同名
            3、要求namesapce的值必须为接口的全限定类名

【推荐使用】resource加载映射文件,如果使用注解开发只能使用 package方式,注解开发不能使用加载配置文件的方式,因为注解已经取代了xml文件。所有注解都使用在接口的方法上。

5.7、全局配置小结

一、全局配置:如果需要配置多个,必须按照以下顺序
    properties(属性)重点
    settings(设置)重点
    typeAliases(类型别名) 重点
    typeHandlers(类型处理器)
    environments(环境配置)
        environment(环境变量)
        transactionManager(事务管理器)
        dataSource(数据源)
    mappers(映射器)重点
二、常用配置:
    1、properties(属性)
        【作用】定义一些属性或者加载外部的资源文件
        【用法】
           2、加载外部的资源文件(src, jdbc.properties)掌握
                <properties resource="jdbc.properties"></properties>

                获取参数: ${driver}
    2、settings(设置):
        驼峰自动映射:数据库下划线命名:user_name  ===》实体类属性命名:userName
                <settings>
                      <setting name="mapUnderscoreToCamelCase" value="true"/>
                  </settings>

            说明:如果不满足驼峰式命名,查询时起别名。
   3、typeAliases(类型别名)
        【作用】给类的全名称 取 短名称  com.heima.pojo.User===>User,不区分大小写
        【配置】
             <typeAliases>

                <package name="com.heima.mybatis.pojo"/> 掌握
            </typeAliases>


   4、mappers(映射器)
        【作用】把映射文件   和  接口 进行绑定
        【配置】
            加载xml文件:
                1、mapper resource="src下的映射文件"    多

            加载接口:【1】映射文件和接口名称必须一致; 【2】路径一致
                2、接口扫描: package name="com.heima.mybatis.dao" 多
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值