史上最易懂Mybatis配置解析

本文详细介绍了MyBatis配置文件中的属性配置、类型名称简化和设置部分,包括如何动态配置数据库连接信息,利用属性文件和内部配置文件,以及通过类型别名简化返回值类型声明。此外,还提到了MyBatis的设置选项,如开启缓存和日志实现。最后,讨论了映射器的两种注册方式:资源路径和接口注册,并强调了接口注册的注意事项。
摘要由CSDN通过智能技术生成

MyBatis 的配置文件包含了会深深影响 MyBatis 行为的设置和属性信息。
Mybatis官方文档:https://mybatis.org/mybatis-3/zh/
上期文章:Mybatis基本项目搭建

文章要点:
Mybatis配置解析

属性配置

我们在Mybatis核心配置文件里写配置了数据库的驱动,链接地址,用户名和密码等等配置


    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/spring?useUnicode=true&amp;useSSL=false&amp;characterEncoding=UTF-8&amp;useUnicode=true"/>
                <property name="username" value="root"/>
                <property name="password" value="123123"/>
            </dataSource>
        </environment>
    </environments>

当我们链接不同的数据库时需要去改写这些配置,那么可不可以动态的改写这些配置呢?当然可以。这里使用属性配置<properties> </properties>标签,里面就是数据库的一些配置。例如:

<properties resource="db.properties">
    <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
    <property name="url" value="jdbc:mysql://localhost:3306/spring?useUnicode=true&amp;useSSL=false&amp;characterEncoding=UTF-8&amp;useUnicode=true"/>
    <property name="username" value="root"/>
    <property name="password" value="123123"/>
</properties>

<property></property>namevalue就是配置的键和值。
这时我们原来数据库配置使用**${}**来获取属性值。

<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>

那么我们可不可以把数据库的配置单独放在一个文件里呢,当然可以,我们在resources目录下新建配置文件db.properties:

driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/spring?useUnicode=true&useSSL=false&characterEncoding=UTF-8&useUnicode=true
username=root
password=123123

这里面是我们数据库的相关配置。那么我们如何在我们的Mybatis配置文件里面引入它呢。还是使用<properties></properties>标签,标签里有个属性resource,其值为我们的配置文件路径。这里我们配置如下:

<properties resource="db.properties"/>

而我们的原来的数据库配置依然不变。这时我们运行项目,依然可以成功。
这时如果我们同时写入了外部配置文件和内部配置文件,我们在内部配置文件中写入一个错误的数据库密码,那么哪个会生效呢?

<!--同时引入外部配置和内部配置文件-->
<properties resource="db.properties">
 	<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
    <property name="url" value="jdbc:mysql://localhost:3306/spring?useUnicode=true&amp;useSSL=false&amp;characterEncoding=UTF-8&amp;useUnicode=true"/>
    <property name="username" value="root"/>

    <property name="password" value="123qwe"/>
</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="${password}"/>
        </dataSource>
    </environment>
</environments>

我们尝试运行一下,发现报错了,显然当有外部配置文件和内部配置文件时,优先执行内部配置文件。

类型名称简化

当我们在写sql映射语句时,经常会写返回值类型,当返回值为自定义类时,我们就要写一段长长的类限定名,当只有几个sql语句还好,若是一多,就会显得很麻烦,这市场我们可以别名来简化我们的工作。

<typeAliases>
<typeAlias type="com.mirce.pojo.User" alias="user"/>
</typeAliases>

从上面可以看出简化类型名称使用<typeAliases></typeAliases>标签,里面的<typeAlias></typeAlias>就是我们用来规定类型别名了,属性type是我们要使用的类,alias就是这个类的别名。以后我们要写返回值类时,直接写这个别名即可。例如之前我们的sql映射语句为:

<delete id="deleteUser" parameterType="com.mirce.pojo.User">
    delete from spring.ay_user where id=#{id}
</delete>

使用别名后我们可以这样写:

<!--com.mirce.pojo.User别名为user-->
<delete id="deleteUser" parameterType="user">
    delete from spring.ay_user where id=#{id}
</delete>

如果我们的实体类太多,一个一个配置别名太麻烦,我们可以配置一个包名,这个包下所有的类都会有一个别名即这个类的名字,默认首字母小写。Mybatis寻找返回值类型时会扫描这个包下的类。例如我们配置User这个类,所在包为com.mirce.pojo

<typeAliases>
<package name="com.mirce.pojo"/>
</typeAliases>

sql映射语句为:

<delete id="deleteUser" parameterType="user">
    delete from spring.ay_user where id=#{id}
</delete>

Mybatis为常见的类型默认配置了一个别名:
默认类型别名
默认类型别名

设置

这是 MyBatis 中极为重要的调整设置,它们会改变 MyBatis 的运行时行为。
Mybatis里有许多设置,如开启缓存(cacheEnabled),指定 MyBatis 所用日志的具体实现(logImpl),具体可以参考官方文档。
Mybatis设置

映射器

映射器即我们在核心配置文件里注册我们的Mapper文件。我么以前注册文件时默认采用资源路径配置

<mappers>
   <mapper resource="com/mirce/dao/UserMapper.xml"/>
</mappers>

除此之外,我们还可以采用接口注册:

<mappers>
    <mapper class="com.mirce.dao.UserMapper"/>
</mappers>

使用接口注册需注意Mapper文件要和接口在同一个包内,且Mapper文件名称与接口名称相同。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值