Mybatis 配置之属性优化、别名优化、映射器说明

针对 使用 Mybatis 实现数据库的增删改查、Map和模糊查询
从以下三个方面进行属性配置:

  • 属性优化
  • 别名优化
  • 映射器说明

参考 Mybatis 中文官方文档:https://mybatis.org/mybatis-3/zh/configuration.html#


1 XML 配置说明

MyBatis 的配置文件包含了会深深影响 MyBatis 行为的设置和属性信息。 配置文档的顶层结构如下:(加粗的重点掌握,其他了解即可

configuration(配置):

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

2 属性优化

2.1 环境变量(environment)

MyBatis 可以配置成适应多种环境,这种机制有助于将 SQL 映射应用于多种数据库之中, 现实情况下有多种理由需要这么做。

  1. transactionManager(事务管理器)-- JDBC / MANAGED
  2. dataSource(数据源)-- UNPOOLED / POOLED / JNDI

记住三点:

  • 尽管 Mybatis 可以配置多个环境,但每个 SqlSessionFactory 实例只能选择一种环境。
  • 学会使用配置多套运行环境!
  • Mybatis 默认的事务管理器就是 JDBC , 连接池 : POOLED
    <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="${pwd}"/>
            </dataSource>
        </environment>
    </environments>

2.2 属性(properties)

我们可以通过properties属性来实现引用配置文件

这些属性都是可外部配置且可动态替换的,既可以在典型的 Java 属性文件中配置,亦可通过 properties 元素的子元素来传递

  • 通过 Java 属性文件配置(连接数据库)
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
                <property name="username" value="root"/>
                <property name="password" value="Kc635908933"/>
            </dataSource>
        </environment>
    </environments>
  • 通过 properties 元素的子元素来传递(db.properties)
// 创建 db.properties
driver = com.mysql.jdbc.Driver
url = jdbc:mysql://localhost:3306/mybatis
username = root

mybatis-config.xml 核心配置文件:

    <properties resource="db.properties">
        <property name="pwd" value="Kc635908933"/>
    </properties>
    
    <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="${pwd}"/>
            </dataSource>
        </environment>
    </environments>

如果一个属性在不只一个地方进行了配置,那么,MyBatis 将按照下面的顺序来加载:

(1 ) 首先读取在 properties 元素体内指定的属性。

(2)然后根据 properties 元素中的 resource 属性读取类路径下属性文件,或根据 url 属性指定的路径读取属性文件,并覆盖之前读取过的同名属性。

(3) 最后读取作为方法参数传递的属性,并覆盖之前读取过的同名属性。

因此,通过方法参数传递的属性具有最高优先级,resource/url 属性中指定的配置文件次之,最低优先级的则是 properties 元素中指定的属性。

3 别名优化

3.1 类型别名(typeAliases)

  • 方法一

类型别名可为 Java 类型设置一个缩写名字。 它仅用于 XML 配置,意在降低冗余的全限定类名书写。例如:

<typeAliases>
  <typeAlias alias="Author" type="domain.blog.Author"/>
  <typeAlias alias="Blog" type="domain.blog.Blog"/>
  <typeAlias alias="Comment" type="domain.blog.Comment"/>
  <typeAlias alias="Post" type="domain.blog.Post"/>
  <typeAlias alias="Section" type="domain.blog.Section"/>
  <typeAlias alias="Tag" type="domain.blog.Tag"/>
</typeAliases>
  • 方法二

当这样配置时,Blog 可以用在任何使用 domain.blog.Blog 的地方。也可以指定一个包名,MyBatis 会在包名下面搜索需要的 Java Bean,比如:

<typeAliases>
  <package name="domain.blog"/>
</typeAliases>
  • 方法三

每一个在包 domain.blog 中的 Java Bean,在没有注解的情况下,会使用 Bean 的首字母小写的非限定类名来作为它的别名。 比如 domain.blog.Author 的别名为 author;若有注解,则别名为其注解值。见下面的例子:

@Alias("author")
public class Author {
    ...
}

3.2 设置(settings)

这是 MyBatis 中极为重要的调整设置,它们会改变 MyBatis 的运行时行为。
具体配置参数查看 Mybatis 中文官方文档:https://mybatis.org/mybatis-3/zh/configuration.html#settings
以下展示部分参数(不需要全部记住,用的时候查就行)
在这里插入图片描述
在这里插入图片描述

4 映射器说明

4.1 其他配置

诸如 类型处理器(typeHandlers)、对象工厂(objectFactory)、插件配置(plugins),这里就不太展开叙述,在实际应用中也不经常使用。

4.2 映射器(mappers)

既然 MyBatis 的行为已经由上述元素配置完了,我们现在就要来定义 SQL 映射语句了。 但首先,我们需要告诉 MyBatis 到哪里去找到这些语句。 在自动查找资源方面,Java 并没有提供一个很好的解决方案,所以最好的办法是直接告诉 MyBatis 到哪里去找映射文件。

  • 方法一(推荐使用)-- 使用相对于类路径的资源引用
<!-- 使用相对于类路径的资源引用 -->
<mappers>
  <mapper resource="org/mybatis/builder/AuthorMapper.xml"/>
  <mapper resource="org/mybatis/builder/BlogMapper.xml"/>
  <mapper resource="org/mybatis/builder/PostMapper.xml"/>
</mappers>
  • 方法二(不推荐) – 使用完全限定资源定位符(URL)
<!-- 使用完全限定资源定位符(URL) -->
<mappers>
  <mapper url="file:///var/mappers/AuthorMapper.xml"/>
  <mapper url="file:///var/mappers/BlogMapper.xml"/>
  <mapper url="file:///var/mappers/PostMapper.xml"/>
</mappers>
  • 方法三 – 使用映射器接口实现类的完全限定类名
<!-- 使用映射器接口实现类的完全限定类名 -->
<mappers>
  <mapper class="org.mybatis.builder.AuthorMapper"/>
  <mapper class="org.mybatis.builder.BlogMapper"/>
  <mapper class="org.mybatis.builder.PostMapper"/>
</mappers>

注意:
- 接口和他的 Mapper 配置文件必须同名
- 接口和他的 Mapper 配置文件必须在同一个包下

  • 方法四 – 将包内的映射器接口实现全部注册为映射器
<!-- 将包内的映射器接口实现全部注册为映射器 -->
<mappers>
  <package name="org.mybatis.builder"/>
</mappers>

猜你喜欢

转载自blog.csdn.net/Kc635908933/article/details/112567704