前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Mybatis—配置解析、别名优化、映射器解析

Mybatis—配置解析、别名优化、映射器解析

作者头像
Albert_xiong
发布2021-06-21 17:44:33
8690
发布2021-06-21 17:44:33
举报
文章被收录于专栏:Mybatis学习Mybatis学习
  • 属性优化
  • 别名优化
  • 映射器说明

1.核心配置文件说明(mybatis-config.xml)

先看一下我的核心配置文件的总体大概:

代码语言:javascript
复制
<?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>
    <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?useSSL=true&amp;useUnicode=true&amp;characterEncoding=utf8"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="com/xiong/dao/UserMapper.xml"/>
    </mappers>
</configuration>

configuration(配置):

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

1.1 环境变量(environments)

Mybatis可以适用于多种环境配置,其中选择default就行。

  1. transactionManager(事务管理器)-- JDBC / MANAGED (我们一般选择JDBC)
  2. dataSource(数据源)-- UNPOOLED / POOLED / JNDI (在这里我们也选择POOLED) 需要注意的地方: 1.也许Mybatis可以配置很多的环境,但是每个SqlSessionFactory 只会选择一个环境去执行 2.学会使用对个环境…在下面添加就行 3.Mybatis 默认的事务管理器就是 JDBC , 连接池 : POOLED
代码语言:javascript
复制
    <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>

1.2 属性(properties)

通过设置db.properties去引用该配置文件吗,可通过 properties 元素的子元素来传递。 之前的配置:

代码语言:javascript
复制
    <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?useSSL=true&amp;useUnicode=true&amp;characterEncoding=utf8"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>

如何编写一个db.properties呢? 通过 properties 元素的子元素来传递(db.properties)

代码语言:javascript
复制
driver = com.mysql.jdbc.Driver
url = jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=utf8
user = root
password = 123456

注意:千万不要忘记在配置文件中引入properties。 以下是更改后的配置文件

代码语言:javascript
复制
    <properties resource="db.properties"></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="${user}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>

关于这个优先级的问题:(如果属性在配置文件中也进行了配置,不止在db.properties中进行配置)

1.首先读取db.properties中属性的配置 2.然后根据 properties 元素中的 resource 属性读取类路径下属性文件,或根据 url 属性指定的路径读取属性文件,并覆盖之前读取过的同名属性。 3.最后读取作为方法参数传递的属性,并覆盖之前读取过的同名属性。 因此,通过方法参数传递的属性具有最高优先级resource/url 属性中指定的配置文件次之最低优先级的则是 properties 元素中指定的属性

2.别名

2.1 类型别名(typeAliases)

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

代码语言:javascript
复制
<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,比如:

代码语言:javascript
复制
<typeAliases>
  <package name="domain.blog"/>
</typeAliases>

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

代码语言:javascript
复制
@Alias("author")
public class Author {
    ...
}

2.2 设置(settings)

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

在这里插入图片描述
在这里插入图片描述

3.映射器设置

3.1 Mappers映射

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

代码语言:javascript
复制
<!-- 使用相对于类路径的资源引用 -->
<mappers>
  <mapper resource="org/mybatis/builder/AuthorMapper.xml"/>
  <mapper resource="org/mybatis/builder/BlogMapper.xml"/>
  <mapper resource="org/mybatis/builder/PostMapper.xml"/>
</mappers>

方法二(不推荐) – 使用完全限定资源定位符(URL)

代码语言:javascript
复制
<!-- 使用映射器接口实现类的完全限定类名 -->
<mappers>
  <mapper class="org.mybatis.builder.AuthorMapper"/>
  <mapper class="org.mybatis.builder.BlogMapper"/>
  <mapper class="org.mybatis.builder.PostMapper"/>
</mappers>

方法三 – 使用映射器接口实现类的完全限定类名

代码语言:javascript
复制
<!-- 使用映射器接口实现类的完全限定类名 -->
<mappers>
  <mapper class="org.mybatis.builder.AuthorMapper"/>
  <mapper class="org.mybatis.builder.BlogMapper"/>
  <mapper class="org.mybatis.builder.PostMapper"/>
</mappers>

注意:

  • 接口和他的 Mapper 配置文件必须同名
  • 接口和他的 Mapper 配置文件必须在同一个包下
在这里插入图片描述
在这里插入图片描述

方法四 – 将包内的映射器接口实现全部注册为映射器

代码语言:javascript
复制
<!-- 将包内的映射器接口实现全部注册为映射器 -->
<mappers>
  <package name="org.mybatis.builder"/>
</mappers>
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-06-07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.核心配置文件说明(mybatis-config.xml)
    • 1.1 环境变量(environments)
      • 1.2 属性(properties)
      • 2.别名
        • 2.1 类型别名(typeAliases)
          • 2.2 设置(settings)
          • 3.映射器设置
            • 3.1 Mappers映射
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档