mybatis-config.xml文件中的mappers标签使用

 更新时间:2024年10月21日 08:42:07   作者:一只呆小白  
在MyBatis配置中,<mapper>标签关键用于指定SQL Mapper的XML文件路径,主要有三种指定方式:resource、url和class,Resource方式从类的根路径开始,适合放在项目内部保障移植性,URL方式指定绝对路径,移植性差,适用于外部路径

前言

在MyBatis中,< mapper >标签非常重要,因为它对应着我们存放sql语句的xml文件,在之前的使用中我们都是使用resource来指定路径,但其实除了resource可以指定路径的还有url和class但路径形式有所不同,下面来讨论一下有什么不同。

resource

resource对应的路径是从类的根路径开始的。

什么是类的根路径? 

以在idea的maven项目中,src文件夹下的main文件夹下的java文件夹和resources文件夹同级,虽然二者是两个文件夹,但他们其实都是类的根路径。

从图中可以看出,上面java下的com文件夹和resource文件夹下的xml文件在target文件夹中处于同一文件夹的同一级。

resource用法实例

resources文件夹下位置

url

这种方式是一种绝对路径的方式,这种方式不要求配置文件必须放到类路径当中,哪里都行,只要提供一个绝对路径就行。这种方式使用极少,因为移植性太差。

为什么说移植性太差? 

因为在例如在windows下url对应的路径带有D盘等,但在mac和Linux下没有D盘的概念,这就会造成,项目的移植性很差。

class

这个位置提供的是mapper接口的全限定接口名,必须带有包名的。

mapper标签的作用是指定SqlMapper.xml文件的路径,指定接口名有什么用呢?

举例:

< mapper class=“com.powernode.mybatis.mapper.CarMapper”/>

如果你class指定是:com.powernode.mybatis.mapper.CarMapper

那么mybatis框架会自动去com/powernode/mybatis/mapper目录下查找CarMapper.xml文件。

注意:也就是说:如果你采用这种方式,那么你必须保证CarMapper.xml文件和CarMapper接口必须在同一个目录下。并且名字一致。

  • CarMapper接口-> CarMapper.xml
  • LogMapper接口-> LogMapper.xml

名称一致很好实现,在同一目录下如何实现?难道我们要在java文件夹下的mapper文件夹下创建xml文件?答案是否定的。 

上面我们讨论resource的时候,我们发现java文件夹和resources文件夹其实是“一个文件夹”,只不过起了两个名字。因此我们只需要在resources文件夹下创建同等的文件夹结构就可以了。

实战

在resources文件夹下创建同等文件夹

这里必须是/不可以是.具体为什么,你可以试试。

放文件

设置mapper标签

运行一个测试案例

结果

再次查看target文件夹

可以看出上面我们我们分别将接口和xml文件放在Java和resources同级目录下,但其实他们在同一目录下,再次证实。二者分别放在java和resources文件夹下的同级文件夹下,最终会被放在同一个文件夹下。

问题

如果有多个.xml文件我们一一写出来的话mapper标签也会有很多,还是很麻烦的,强大的MyBatis又给我们解决了

我们只需要使用package标签即可,我们只需要指定接口(动态代理相关知识)所在包名即可,不需要一一指定接口名,但实现的功能是一样的。

这就意味着我们以后不用再一一指定xml文件了,还是非常舒服的。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java函数式编程(十一):遍历目录

    Java函数式编程(十一):遍历目录

    这篇文章主要介绍了Java函数式编程(十一):遍历目录,本文是系列文章的第11篇,其它文章请参阅本文底部的相关文章,需要的朋友可以参考下
    2014-09-09
  • Java环境配置与编译运行详解

    Java环境配置与编译运行详解

    这篇文章主要为大家详细介绍了Java环境配置与编译运行的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03
  • Aop动态代理和cglib实现代码详解

    Aop动态代理和cglib实现代码详解

    这篇文章主要介绍了Aop动态代理和cglib实现代码详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-12-12
  • 邻接表无向图的Java语言实现完整源码

    邻接表无向图的Java语言实现完整源码

    这篇文章主要介绍了邻接表无向图的Java语言实现完整源码,具有一定借鉴价值,需要的朋友可以参考下。
    2017-12-12
  • SpringCloud Gateway动态路由配置详解

    SpringCloud Gateway动态路由配置详解

    这篇文章主要为大家介绍了SpringCloud Gateway动态路由配置详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • java使用iterator遍历指定目录示例分享

    java使用iterator遍历指定目录示例分享

    这篇文章主要介绍了java使用iterator遍历指定目录示例,需要的朋友可以参考下
    2014-04-04
  • SpringBoot将Spring fox更换为Springdoc的方法详解

    SpringBoot将Spring fox更换为Springdoc的方法详解

    由于项目中使用Spring fox已经不维护更新了,代码扫描,扫出问题,需要将Spring fox更换为Spring Doc,所以本文给大家介绍了SpringBoot将Spring fox更换为Springdoc的方法,文中有相关的代码供大家参考,需要的朋友可以参考下
    2024-01-01
  • 剖析SpringCloud Feign中所隐藏的坑

    剖析SpringCloud Feign中所隐藏的坑

    这篇文章主要为大家介绍了剖析SpringCloud Feign中所隐藏的坑示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • Java从控制台读入数据的几种方法总结

    Java从控制台读入数据的几种方法总结

    下面小编就为大家带来一篇Java从控制台读入数据的几种方法总结。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-10-10
  • java构造器 默认构造方法及参数化构造方法

    java构造器 默认构造方法及参数化构造方法

    构造器也叫构造方法、构造函数,是一种特殊类型的方法,负责类中成员变量(域)的初始化。构造器的用处是在创建对象时执行初始化,当创建一个对象时,系统会为这个对象的实例进行默认的初始化,下面文章将进入讲解,需要的朋友可以参考下
    2021-10-10

最新评论