Mybatis入门(二) -- 配置文件

本文详细介绍了MyBatis配置文件的各个组成部分,包括properties属性、settings设置、typeAliases类型命名等,并提供了完整的MyBatis配置示例。

MyBatis 配置文件的 configuration 标签主要包括:

  • configuration 配置
    • properties 属性
    • settings 设置
    • typeAliases 类型命名
    • typeHandlers 类型处理器
    • objectFactory 对象工厂
    • plugins 插件
    • environments 环境
      • environment 环境变量
      • transactionManager 事务管理器
    • databaseIdProvider 数据库厂商标识
    • mappers 映射器

1、properties属性

properties属性可以用来指定外部的.properties文件地址,然后可以通过${properties属性名}来获取值,比如:

  • 在resource目录下创建database.properties文件:
url=jdbc:mysql://localhost:3306/employees?serverTimezone=GMT&zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=UTF-8
username=
password=
  • 同样在resource目录下的mybatis.config.xml文件中,设置配置文件,同时也可以设置属性:
<properties resource="database.properties">
    <property name="driver" value="com.mysql.jdbc.Driver"/>
</properties>
  • 然后就可以使用${属性名}取值:
<!-- 数据库连接池,由 Mybatis 管理,数据库名是 mybatis,MySQL 用户名 root,密码为空 -->
<dataSource type="POOLED">
    <property name="driver" value="${driver}" />
    <property name="url" value="${url}" />
    <property name="username" value="${username}" />
    <property name="password" value="${password}" />
</dataSource>

注意,MyBatis 加载属性的顺序如下:

  • 首先读取 properties 元素体内指定的属性
  • 然后根据 properties 元素中的 resource 属性读取类路径下属性文件或根据 url 属性指定的路径读取属性文件,并覆盖已读取的同名属性
  • 最后读取作为方法参数传递的属性,并覆盖已读取的同名属性

2、settings设置

参考:http://www.mybatis.org/mybatis-3/zh/configuration.html#settings

3、typeAliases 类型命名

typeAliases用于给类型取别名,以避免重复写冗长的完全限定名。声明了Aliase以后,在映射文件中 parameterType 和 resultType 就可以直接使用别名,无需使用全路径。

  • 可以单独给一个类取别名
<typeAliases>
    <typeAlias type="com.test.mybatisTest.mapper.EmployeesMapper"></typeAlias>
</typeAliases>
  • 可以给一个包设置别名,这样这个包下的所有类都不需要写完整限定名
<typeAliases>
    <package name="com.test.mybatisTest.model"/>
</typeAliases>

注意,Mybatis中内建的别名有MyBatis中文文档——typeAliases::

别名映射的类型
_bytebyte
_longlong
_shortshort
_intint
_integerint
_doubledouble
_floatfloat
_booleanboolean
stringString
byteByte
longLong
shortShort
intInteger
integerInteger
doubleDouble
floatFloat
booleanBoolean
dateDate
decimalBigDecimal
bigdecimalBigDecimal
objectObject
mapMap
hashmapHashMap
listList
arraylistArrayList
collectionCollection
iteratorIterator

4、typeHandlers 类型处理器

typeHandlers 的作用是实现 JDBC 类型和 Java 类型的之间的转换,MyBatis 中默认的类型处理器基本能满足日常需求,自定义 typeHandlers 在这里不做介绍。

5、environments 环境

MyBatis 的环境配置实际是数据源的配置。MyBatis 可以配置多个环境,帮助你将 SQL 映射对应到多种数据库。

注:尽管可以配置多个环境,每个 SqlSessionFactory 实例只能对应一个数据库,有几个数据库就需要创建几个 SqlSessionFactory 实例。

可以使用new SqlSessionFactoryBuilder().build(InputStream reader,String environement)来指定创建的SqlSessionFactory实例对应的数据源。

6、transactionManager 事务管理器

MyBatis 中的两种事务管理器,即 type="[JDBC|MANAGED]":

  • JDBC:直接使用 JDBC 的提交和回滚设置
  • MANAGED:让容器来管理事务的整个生命周期

7、 dataSource 数据源

dataSource 元素使用标准的 JDBC 数据源接口来配置 JDBC 连接对象的资源。MyBatis 三种內建的数据源类型,即 type="[UNPOOLED|POOLED|JNDI]",这里只详细介绍 UNPOOLED

(1)UNPOOLED

UNPOOLED 不支持 JDBC 数据源连接池,实现的只是每次被请求时打开和关闭连接。其包含的属性:

  • driver:JDBC 驱动的 Java 类的完全限定名,如 MySQL 的 com.mysql.jdbc.Driver
  • url:数据库的 JDBC URL 地址
  • username:数据库的用户名
  • password:数据库的密码
  • defaultTransactionIsolationLevel:默认的连接事务隔离级别。

(2)POOLED

POOLED 支持 JDBC 数据源连接池,利用“池”的概念将 JDBC 连接对象组织起来,避免了创建新的连接实例时所必需的初始化和认证时间。除了有 UNPOOLED 的属性外还有包括 poolMaximumActiveConnections 、 poolMaximumIdleConnections 等属性。

(3)JNDI

不做介绍

一般来说我们使用POOLED

8、mappers 映射器

mappers 用于引用已经定义好的映射文件,告诉 MyBatis 去哪寻找映射 SQL 的语句。常见的方法:

(1)通过 resource 加载单个映射文件

<mappers>
      <mapper resource="com/test/mybatis/mapper/UserMapper.xml"/> 
</mappers>

(2)通过完全限定资源定位符(绝对路径前加上"file:///")加载单个映射文件

<mappers>
      <mapper url="file:///home/shiyanlou/workspace/MyBatisTest/src/com/test/mybatis/mapper/UserMapper.xml"/> 
</mappers>

(3)通过 mapper 接口对象加载单个映射文件

<mappers>
      <mapper class="com.test.mybatis.mapper.UserMapper"/>
</mappers>

(4)通过 mapper 接口包加载整个包的映射文件

<mappers>
     <package name="com/shiyanlou/mybatis/mapper" />
</mappers>

注:(3)和(4)中需要将 mapper 接口类名和 mapper.xml 映射文件名称保持一致,且在一个目录中

9、完整的Mybatis.config.xml示例

<configuration>
    <properties resource="database.properties">
        <property name="driver" value="com.mysql.jdbc.Driver"/>
    </properties>
    <typeAliases>
        <typeAlias type="com.test.mybatisTest.mapper.EmployeesMapper"></typeAlias>
    </typeAliases>

    <!-- 配置mybatis运行环境 -->
    <environments default="development">
        <environment id="development">
            <!-- type="JDBC" 代表直接使用 JDBC 的提交和回滚设置 -->
            <transactionManager type="JDBC" />

            <!-- POOLED 表示支持JDBC数据源连接池 -->
            <!-- 数据库连接池,由 Mybatis 管理,数据库名是 mybatis,MySQL 用户名 root,密码为空 -->
            <dataSource type="POOLED">
                <property name="driver" value="${driver}" />
                <property name="url" value="${url}" />
                <property name="username" value="${username}" />
                <property name="password" value="${password}" />
            </dataSource>
        </environment>
    </environments>

    <mappers>
        <mapper resource="EmployeesMapper"></mapper>
    </mappers>
</configuration>

 

转载于:https://my.oschina.net/pierrecai/blog/1517542

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值