Mybatis中接口和对应的mapper文件位置配置详解

时间:2022-06-05 03:21:41

Mybatis中接口和对应的mapper文件位置配置详解

原链接为:https://blog.csdn.net/fanfanzk1314/article/details/71480954

今天遇到一个问题是mybatis中接口和对应的mapper文件位置不同,而引起的操作也会不同,在网上找了好久最终找到了方法,这里就简单的解析一下:

我们知道在典型的maven工程中,目录结构有:src/main/java和src/main/resources,前者是用来存放java源代码的,后者则是存放一些资源文件,比如配置文件等.   
      Mybatis中接口和对应的mapper文件不一定要放在同一个包下,如果放在一起的目的是为了Mybatis进行自动扫描,并且要注意此时Java接口的名称和mapper文件的名称要相同,否则会报异常,由于此时Mybatis会自动解析对应的接口和相应的配置文件,所以就不需要配置mapper文件的位置了。
1:接口和文件放在同一个包中如下:
在默认的情况下maven打包的时候,对于src/main/java目录只打包源代码,而不会打包其他文件。所以此时如果把对应的mapper文件放到src/main/java目录下时,不会打包到最终的jar文件夹中,也不会输出到target文件夹中,由于在进行单元测试的时候执行的是/target目录下/test-classes下的代码,所以在测试的时候也不会成功。

为了实现在maven默认环境下打包时,Mybatis的接口和mapper文件在同一包中,可以通过将接口文件放在src/main/java某个包中,而在src/main/resources目录中建立同样的包,这是一种约定优于配置的方式,这样在maven打包的时候就会将src/main/java和src/main/resources相同包下的文件合并到同一包中。

在默认maven打包的环境下,不要将接口文件和mapper文件全部放到src/main/java,这样也不会把mapper文件打包进去

Mybatis中接口和对应的mapper文件位置配置详解

src/main/javasrc/main/resources中相同的包名,相同的文件名,默认打包后的结构如下:

Mybatis中接口和对应的mapper文件位置配置详解

发现打包之后已经到同一个包下了。

而当你把接口和mapper文件全部放到src/main/java中同一包时,如下:

Mybatis中接口和对应的mapper文件位置配置详解

打包之后的文件如下:

Mybatis中接口和对应的mapper文件位置配置详解

发现编译打包之后并没有mapper文件,所以此时不管是测试还是正式执行都会出错!!

更改maven构建配置

如果不想将接口和mapper文件分别放到src/main/javasrc/main/resources中,而是全部放到src/main/java,那么在构建的时候需要指定maven打包需要包括xml文件,具体配置如下:

  1. <span style="font-size:14px;"><build>
  2. <resources>
  3. <resource>
  4. <directory>src/main/java</directory>
  5. <includes>
  6. <include>**/*.xml</include>
  7. </includes>
  8. <filtering>false</filtering>
  9. </resource>
  10. </resources>
  11. </build></span>

这样在打包的时候也会将mapper文件打包到/target文件夹中。

2:接口和文件不在同一个包下

如果接口和mapper文件不在同一个包下,就不能进行自动扫描解析了,需要对接口和文件分别进行配置。
2.1 XML配置方式
2.1.1 不使用Spring
使用Mybatis的配置文件如下:

  1. <span style="font-size:14px;"><?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE configuration
  3. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-config.dtd">
  5. <configuration>
  6. <mappers>
  7. <!-- 扫描路径下的mapper映射文件 -->
  8. <mapper resource="mappers/UserMapper.xml"/>
  9. <!-- 扫描包下的接口文件 -->
  10. <package name="edu.zju.bme.data.manage.mapper" />
  11. </mappers>
  12. </configuration></span>

2.1.2 使用Spring
使用spring的配置文件如下:

  1. <span style="font-size:14px;"><beans xmlns="http://www.springframework.org/schema/beans"
  2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xmlns:mybatis="http://mybatis.org/schema/mybatis-spring"
  4. xsi:schemaLocation="
  5. http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
  6. http://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring.xsd">
  7. <!-- 配置接口存储的包,用来扫描mapper接口 -->
  8. <mybatis:scan base-package="edu.zju.bme.data.manage.mapper" />
  9. <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  10. <!-- 配置mapper文件位置,扫描映射文件,可以使用Ant风格的路径格式 -->
  11. <property name="mapperLocations" value="classpath*:mappers/**/*.xml" />
  12. // ...
  13. </bean>
  14. </beans></span>

Mybatis中接口和对应的mapper文件位置配置详解的更多相关文章

  1. Mybatis中接口和对应的mapper文件位置配置深入剖析

    首先要说明的问题是,Mybatis中接口和对应的mapper文件不一定要放在同一个包下,放在一起的目的是为了Mybatis进行自动扫描,并且要注意此时java接口的名称和mapper文件的名称要相同, ...

  2. Mybatis中接口和对应的mapper文件命名为什么需要一样?

    背景: 自己对于Mybatis现阶段只处于会用的阶段,有些问题,自己还是想深入的了解一下.就拿Mybatis的接口文件和mapper文件命名需要一致来开始. 解决: 当我们将接口和mapper文件放在 ...

  3. ssm框架中,项目启动过程以及web&period;xml配置详解

    原文:https://blog.csdn.net/qq_35571554/article/details/82385838 本篇主要在基于SSM的框架,深入讲解web.xml的配置 web.xml   ...

  4. &lbrack;maven&rsqb; settings 文件节点配置详解

    基本结构 <settings xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3. ...

  5. centos7&period;2环境中kettle环境搭建及任务推送配置详解

    目标:将mysql5.5中testdb1的ehr_user表推送到tdoa的ehr_user表中,为避免不必要的麻烦,两张表结构.编码,包括数据库编码保持一致 操作系统:centos7.2 kettl ...

  6. 【MyBatis笔记】mapper文件的配置以及说明

    <!doctype html>[MyBatis笔记]mapper文件的配置以及说明 figure:last-child { margin-bottom: 0.5rem; } #write ...

  7. Spring、Spring MVC、MyBatis整合文件配置详解

    原文  http://www.cnblogs.com/wxisme/p/4924561.html 主题 MVC模式MyBatisSpring MVC 使用SSM框架做了几个小项目了,感觉还不错是时候总 ...

  8. 转载 Spring、Spring MVC、MyBatis整合文件配置详解

    Spring.Spring MVC.MyBatis整合文件配置详解   使用SSM框架做了几个小项目了,感觉还不错是时候总结一下了.先总结一下SSM整合的文件配置.其实具体的用法最好还是看官方文档. ...

  9. 【转】Spring、Spring MVC、MyBatis整合文件配置详解

    见:http://www.tuicool.com/articles/eyINveF web.xml的配置 web.xml应该是整个项目最重要的配置文件了,不过servlet3.0中已经支持注解配置方式 ...

随机推荐

  1. 报错:emulator&colon; WARNING&colon; &period;&sol;android&sol;metrics&sol;metrics&lowbar;reporter&lowbar;toolbar&period;cpp&colon;167&colon; Can&&num;39&semi;t upload usage metrics&colon; Error

  2. validate jquery 注册页面使用实例 详解

    官方使用文档:http://jqueryvalidation.org/documentation/ 参考资料:http://www.w3cschool.cc/jquery/jquery-plugin- ...

  3. VMware 关闭虚拟机 Ubuntu 12 的 3D 效果,提高性能

    Ubuntu 2012,有 2D 和 3D 的渲染效果,但是 在虚拟机中,开启 3D 效果后,特别卡.好在 VMware 中有个“关闭3D”的开关,如下图所示: 去掉勾选“加速 3D 图形”

  4. php win主机下实现ISAPI&lowbar;Rewrite伪静态

    有的win主机iss不支持 .htaccess 文件, 我在这里指的不是本地 在本地的话用apmserv服务器可以用.htaccess 文件,用apmserv服务器环境配置伪静态可以看 php 伪静态 ...

  5. memset用法详解&lpar;转)

    问题描述: int * cow = new int[n+1]; memset(cow,0,(n+1)*4); 将N+1个元素置成0,为什么不行 memset是对一个字节的int4个字节,因此*4 但是 ...

  6. oracle redo日志维护

    环境 OS:Red Hat Linux As 5 DB:10.2.0.1 1.添加日志组 alter database add logfile group 4 ('/u01/app/oracle/or ...

  7. ios开发之xcode6中如何添加pch全局引用文件

    xcode6中去掉了默认添加pch文件,这就需要我们自己手动添加pch文件了,添加pch文件是为了一些琐碎的头文件引用,加快编译速度! 下面就说下该如何手动添加pch文件: 1.添加一个文件,在oth ...

  8. MTK NTP和NITZ更新时间的问题

    NITZ(Network Identity and Time Zone,网络标识和时区),是一种用于自动配置本地的时间和日期的机制,同时也通过无线网向移动设备提供运营商信息.NITZ是自从PHASE ...

  9. 如何批量的在django中对url进行用户登陆限制

    参考URL: https://blog.csdn.net/hanshengzhao/article/details/79540306?utm_source=blogxgwz0 1,首先定义一个内部有装 ...

  10. 守护进程的创建(syslog函数)

    守护进程(daemon)是指在后台运行的,没有控制终端与之相连的进程.它独立于控制终端,通常周期性的执行某种任务. 守护进程是一种很有用的进程.Linux的大多数服务器就是用守护进程的方式实现的,如I ...