从零开始学Mybatis(七)——Mybatis核心配置

  • Properties

定义属性及读取属性文件

  1. 定义属性文件

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

  1. 将属性文件引入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>

使用properties配置后

  • Settings

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

<!--用来配置Mybatis中的设置-->
<settings>
    <!--开启驼峰映射,为自定义的SQL语句服务-->
    <!--设置启用数据库字段下划线映射到java对象的驼峰式命名属性,默认为false-->
    <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>

  

  • typeAliases

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

<typeAliases>
    <!--单个别名定义-->
    <typeAlias alias="Customer" type="demo2.Customer"/>
    <!--批量别名定义,扫描整个包下的类,别名为类名(大小写不敏感)-->
    <!--注意:如果当前包类与子包类重名,则会报异常,我们可以在类上使用注解@Alias("别名")-->
    <package name="demo2"/>
</typeAliases>

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

  • typeHandlers

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

  • Plugins

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

  • Environments

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

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>

  • Mappers
  1. <mapper resource=” ”>

使用相对于类路径的资源

  1. <mapper class=” ”>

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

  1. <package name=” ”>

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值