Mybatis核心配置

116 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路

Properties

定义属性及读取属性文件

1. 定义属性文件

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/development
jdbc.username=root
jdbc.password=123456

图片1.png

2. 将属性文件引入sqlMappingConfig文件中

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <!--用resource引入外部属性配置文件-->
    <properties resource="db.properties">
        <!--在properties内部用property定义属性-->
        <!--如果外部配置文件有该属性,则内部定义的属性会被外部属性覆盖-->
        <property name="jdbc.username" value="root"/>
        <property name="jdbc.password" value="1234"/>
    </properties>
    <environments default="development">
        <environment id="development">
            <!--使用jdbc事务管理-->
            <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>
    <!--加载映射文件-->
    <mappers>
        <!--<mapper resource="demo1/Mapping"/>-->
        <mapper resource="demo2/Mapping"/>
    </mappers>
</configuration>

图片2.png

使用properties配置后

图片3.png

Settings

这是Mybatis中极为重要的调整设置,他们会改变Mybatis的运行时行为


<settings>
* ***

**<setting name **="mapUnderscoreToCamelCase" **value **="true" **/>
</settings>

此时sqlMappingConfig文件如下

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <!--用resource引入外部属性配置文件-->
    <properties resource="db.properties">
        <!--在properties内部用property定义属性-->
        <!--如果外部配置文件有该属性,则内部定义的属性会被外部属性覆盖-->
        <property name="jdbc.username" value="root"/>
        <property name="jdbc.password" value="1234"/>
    </properties>
    <!--用来配置Mybatis中的设置-->
    <settings>
        <!--开启驼峰映射,为自定义的SQL语句服务-->
        <!--设置启用数据库字段下划线映射到java对象的驼峰式命名属性,默认为false-->
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>
    <environments default="development">
        <environment id="development">
            <!--使用jdbc事务管理-->
            <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>
    <!--加载映射文件-->
    <mappers>
        <!--<mapper resource="demo1/Mapping"/>-->
        <mapper resource="demo2/Mapping"/>
    </mappers>
</configuration>

图片4.png

图片5.png

typeAliases

类型别名的作用是为Java类型设置一个短的名字,方便我们后续的编写

<typeAliases>
* ***
**<typeAlias alias **="Customer" **type **="demo2.Customer" />
* *


**<package name **="demo2" **/>
</typeAliases>

图片6.png

定义了别名后,在Mapping中就可以使用别名了

图片7.png

typeHandlers

       无论是Mybatis在预处理语句(PreparedStatement)中设置一个参数时,还是从结果集中取出一个值时,都会用类型处理器将获取的值以合适的方式转换成Java类型。在Mybatis3.4以前的版本需要我们手动注册这些处理器,而在之后的版本处理器都是自动注册的。只需要了解一下即可

Plugins

插件是Mybatis提供的一个非常强大的机制,允许我们通过插件来修改Mybatis的一些核心行为

Environments

Mybatis可以配置多种环境,比如开发环境、测试环境、生产环境。而每种环境需要不同的配置,于是我们可以每种环境对应使用一个environment标签来进行配置并指定唯一标识符id。通过environments标签中的default属性指定一个环境的标识符来快速切换环境

图片8.png

Enviroment子标签说明

1、TransactionManager事务管理

type取值(JDBC/MANAGED/自定义),区别如下:

JDBC:使用JDBC的提交和回滚设置,依赖于从数据源得到的连接来管理事务范围

MANAGED:不提交或回滚一个连接,让容器来管理事务的整个生命周期,ManagedTransactionFactory

自定义:实现TransactionFactory接口,此时type=全类名/别名

2、dataSource数据源

type有以下取值

UNPOOLED:不使用连接池UnpooledDataSourceFactory

POOLED:使用连接池PooledDataSourceFactory

JNDI:在EJB或应用服务器这类容器中查找指定的数据源

自定义:实现DataSourceFactory接口,定义数据源的获取方式

在实际开发时,我们会使用Spring来管理数据源并进行事务控制的配置来覆盖上述数据源的配置

databaseIDProvider

Mybatis可以根据不同的数据库厂商执行不同的sql语句。因此我们可以通过databaseIDProvider标签来进行设置不同厂商


<databaseIdProvider type **="DB_VENDOR" **>
<property name **="MYSQL" **value **="mysql" **/>
<property name **="DB2" **value **="db2" **/>
<property name **="Oracle" **value **="oracle" **/>
<property name **="SQL Server" **value **="sqlserver" **/>
</databaseIdProvider>

图片9.png

Mappers

1. <mapper resource=” ”>

使用相对于类路径的资源

2. <mapper class=” ”>

使用mapper接口类路径,要求mapper接口名称和mapper映射文件名称相同,且放在同一个目录中

3. <package name=” ”>

指定包下的所有mapper接口,要求mapper接口名称和mapper映射文件名称相同,且放在同一个目录中

图片10.png