MyBatis03:配置解析

本文为 SSM 框架系列之 MyBatis 第三部分:配置解析
其它内容的链接如下:
【1】MyBatis01:初识 MyBatis 与 第一个 MyBaits 程序
【2】MyBatis02:CRUD 操作
【3】MyBatis03:配置解析
【4】MyBatis04:作用域和生命周期
【5】MyBatis05:分页
【6】MyBatis06:日志
【7】MyBatis07:使用注解开发
【8】MyBatis08:ResultMap 的结果集映射
【9】MyBatis09:动态 SQL 与缓存

1 配置解析

关于配置解析一定要根据官方文档来学习,官方文档的传送门【CLICK

1.1 配置文件的顶层结构

MyBatis 具有如下的配置信息:

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

接下来总结一下其中比较重要的几个,另外一些不是不重要,而是在实际使用中,我们一般都是直接用它的默认配置。

1.2 属性(properties)标签

除了原来在 mybatis-config.xml 中直接输入数据库的连接属性外, 还可以通过修改 xml 文件中引入外部配置文件来实现。

示例:

原代码:

    <!--mybatis 的官方默认代码,不要修改它-->
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <!--数据库驱动器的驱动-->
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <!--数据库的 url-->
                <property name="url"
                          value="jdbc:mysql://localhost:3306/mybatis?useSSL=false&amp;useUnicode=true&amp;characterEncoding=utf8"/>
                <!--数据库的名称和密码-->
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>

现代码:

    <properties resource="propertyConfig.properties"/>
    <!--mybatis 的官方默认代码,不要修改它-->
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <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>

其中 propertyConfig.properties 文件在 resources 目录下,内容为:

driver = com.mysql.jdbc.Driver
url = jdbc:mysql://localhost:3306/mybatis?useSSL=false&useUnicode=true&characterEncoding=utf8
username = root
password = 123456

当然也可以配置文件中放一半,xml 文件中放一半。如:

    <properties resource="propertyConfig.properties">
        <property name="username" value="root"/>
        <property name="password" value="123456"/>
    </properties>
driver = com.mysql.jdbc.Driver
url = jdbc:mysql://localhost:3306/mybatis?useSSL=false&useUnicode=true&characterEncoding=utf8

如果两个文件有同一个字段,优先使用外部配置文件,即 .properties 文件。

1.3 设置(settings)标签

关于设置的内容,推荐阅读官方文档,其中 mapUnderscoreToCamelCase 这个我记忆犹新,因为之前做书城项目的时候,由于没有用到框架,这里一直出错。

一个配置完整的 settings 标签的示例如下:

<settings>
 <setting name="cacheEnabled" value="true"/>
 <setting name="lazyLoadingEnabled" value="true"/>
 <setting name="multipleResultSetsEnabled" value="true"/>
 <setting name="useColumnLabel" value="true"/>
 <setting name="useGeneratedKeys" value="false"/>
 <setting name="autoMappingBehavior" value="PARTIAL"/>
 <setting name="autoMappingUnknownColumnBehavior" value="WARNING"/>
 <setting name="defaultExecutorType" value="SIMPLE"/>
 <setting name="defaultStatementTimeout" value="25"/>
 <setting name="defaultFetchSize" value="100"/>
 <setting name="safeRowBoundsEnabled" value="false"/>
 <setting name="mapUnderscoreToCamelCase" value="false"/>
 <setting name="localCacheScope" value="SESSION"/>
 <setting name="jdbcTypeForNull" value="OTHER"/>
 <setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/>
</settings>

1.4 类型别名(typeAliases)标签

类型别名是为 Java 类设置一个缩写名字,意在降低冗余的全限定类名书写。

1)全限定类名的缩写

<typeAliases>
  <typeAlias alias="User" type="sharm.pojo.User"/>
</typeAliases>

2)指定包名的缩写,这个时候 MyBatis 会使用 Bean 的首字母小写的非限定类名来作为它的别名。

<typeAliases>
	<package name="sharm.pojo"/>
</typeAliases>

这个时候 sharm.pojo.User 类的别名只能是 user,此时如果想修改别名,可以在该类中写入注解,如:

@Alias("name")
public class User {
    ...
}

此时,User 的别名就成了 name,MyBatis 优先使用注解作为别名

1.5 环境(environments)标签

这一步的配置按照默认的配置来就可以,同时要记住:

  1. MyBatis 可以配置多种环境,适用于开发、运维等;
  2. 尽管可以配置多个环境,但每个 SqlSessionFactory 实例只能选择一种环境;
  3. 默认的事务管理器是 JDBC,默认的连接池是 POOLED。

1.6 映射器(mappers)标签

在这里插入图片描述

1.7 本章总结

  1. 配置 XML 文件中每一个标签的位置都是固定的,如果位置写错的话 IDEA 也会提醒我们。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值