当前位置: 首页 > 面试题库 >

关于SpringBoot项目整合Mybatis时XXXMapper.xml文件存放位置你了解多少?

苏富
2023-05-05

在传统的SSM框架中,使用Mybatis需要大量的XML配置,而在Spring Boot中,Mybatis官方提供了一套自动化配置方案,可以做到Mybatis开箱即用。

不过在使用过程中也会碰到不少问题,Mapper文件放到什么位置,本篇主要介绍SpringBoot项目整合Mybatis时XXXMapper.xml文件存放位置。

我们在SpringBoot项目整合Mybatis时或多或少遇到过这个问题,怎么他的XXXMapper.xml文件放在resources目录下了?哎?他的又在src/main/java/xxx目录下?

带着这些疑问,我们来了解下不同位置下XXXMapper.xml文件到底该怎么处理。

1 SpringBoot整合Mybatis

1.1 pom依赖
<!-- mybatis依赖 --><dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.1.2</version></dependency><!-- druid数据库连接池依赖 --><dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.1.10</version></dependency><!-- mysql连接依赖 --><dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
    <version>5.1.25</version></dependency>


1.2 数据库连接配置
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test
spring.datasource.username=root
spring.datasource.password=admin


1.3 创建实体类
public class User {
   
    private Integer id;
    private String username;
    private Integer age;
    private String address;
	//省略getter和setter方法}


1.4 创建Mapper接口,添加查询方法

我们一般在创建XXXMapper.java接口后,需要在接口上面添加@Mapper注解,用于Spring容器扫描我们编写的接口,但随着我们每创建一个Mapper接口,就要添加一次注解,稍微有一点麻烦,这里我们使用一个快捷的方式,如下: 在我们项目启动入口,XXXApplication.java中添加一个@MapperScan注解

@SpringBootApplication@MapperScan(basePackages = "com.wanik.mybatis.mapper")  //在项目启动时扫描这个路径下的Mapper文件public class MybatisApplication {
   
    public static void main(String[] args) {
   
        SpringApplication.run(MybatisApplication.class, args);
    }}


紧接着我们创建Mapper接口

public interface UserMapper {
   
	//查询所有用户信息
    List<User> getAllUser();}


2 XXXMapper.xml文件位置

2.1 创建一个UserMapper.xml文件如下:
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.wanik.mybatis.mapper.UserMapper">
    <select id="getAllUser" resultType="com.wanik.mybatis.bean.User">
        select * from user    </select></mapper>


2.2 存放位置
2.2.1 方式一:放在与Mapper接口同级目录

存放位置如图: 同级目录 然后编写测试方法查看运行结果:

@SpringBootTestclass MybatisApplicationTests {
   
    @Autowired
    UserMapper userMapper;
    @Test
    void test() {
   
        List<User> allUser = userMapper.getAllUser();
        System.out.println(allUser);
    }}


运行后报错: 报错 报错提示没有找到com.wanik.mybatis.mapper.UserMapper路径下的getAllUser方法可以进行绑定:

原因一:getAllUser方法名没有对应到 原因二:没有找到UserMapper.xml文件,所以无法绑定

方法名是对应到的,我们排除原因一,然后我们查看target路径下有没有UserMapper.xml文件 not found 我们发现target路径下没有找到UserMapper.xml文件

在之前我们只扫描Mapper接口,但却没有告诉Mapper.xml文件的位置,所以在项目启动时没有加载Mapper.xml文件,我们还需做如下配置: 在pom.xml中<build> 节点添加如下配置,用于加载资源:

<build>
    <resources>
        <!-- 扫描src/main/java下所有xx.xml文件 -->
        <resource>
            <directory>src/main/java</directory>
            <includes>
                <include>**/*.xml</include>
            </includes>
        </resource>
        <!-- 扫描resources下所有资源 -->
        <resource>
            <directory>src/main/resources</directory>
        </resource>
    </resources></build>


再次运行,此时就查到的数据: success

2.2.2 方式二:在resources创建Mapper接口同名文件夹用来存放Mapper.xml文件

如果觉得上面配置太过繁琐,我们可以将pom.xml —> <build>—><resources>配置注释掉,之前的@MapperScan注解保留,然后在resources目录下创建com.wanik.mybatis.mapper包,将mapper.xml文件存放在该路径下:

路径 然后再次运行之前的测试方法,结果运行成功:

运行成功

2.2.3 方式三:在resources目录下创建mapper文件夹存放mapper.xml

路径 在application.properties中做如下配置:

mybatis.mapper-locations=classpath:/mapper/*.xml


配置完成后再次运行: success 这种方式也是成功的,且更简单

以上就是SpringBoot整合Mybatis中Mapper.xml文件路径的三种配置方式,快来试试吧

 类似资料:
  • 本文向大家介绍关于缓存你了解多少?相关面试题,主要包含被问及关于缓存你了解多少?时的应答技巧和注意事项,需要的朋友参考一下 cookie:判断用户是否登录过网站,以便实现下次自动登录或记住密码;保存事件信息等。 localstorage:敏感账号一次性登录;单页面用的较多(sessionStorage 可以保证打开页面时 sessionStorage 的数据为空)。 sessionstorage:

  • 父项目为demo-mybatis子模块为mybatis-dao、demo-service。demo-mybatis pom.xml如下: 4.0.0 pom mybatis-DAO Demo-service Demo-mybatis-app org.springframework.Boot spring-boot-starter-parent 2.3.2.release com.example D

  • 本文向大家介绍SpringBoot整合MyBatis-Plus3.1教程详解,包括了SpringBoot整合MyBatis-Plus3.1教程详解的使用技巧和注意事项,需要的朋友参考一下 一.说明 Mybatis-Plus是一个Mybatis框架的增强插件,根据官方描述,MP只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑.并且只需简单配置,即可快速进行 CRUD 操作,从而节省大量时间

  • 本文向大家介绍mybatis 项目配置文件实例详解,包括了mybatis 项目配置文件实例详解的使用技巧和注意事项,需要的朋友参考一下 mybatis项目配置 首先这事一个简单的mybatis项目配置文件: environment mybatis支持多个环境,可以任意配置 比如: 就会有两个环境,environments中的defalut标签选择哪一个,默认就是哪一个 transactionMan

  • 本文向大家介绍详解SpringBoot整合MyBatis详细教程,包括了详解SpringBoot整合MyBatis详细教程的使用技巧和注意事项,需要的朋友参考一下 1. 导入依赖 首先新建一个springboot项目,勾选组件时勾选Spring Web、JDBC API、MySQL Driver 然后导入以下整合依赖 2. 连接数据库 数据库代码: 然后IDEA连接数据库 打开我们创建的数据库sp

  • 本文向大家介绍springboot与mybatis整合实例详解(完美融合),包括了springboot与mybatis整合实例详解(完美融合)的使用技巧和注意事项,需要的朋友参考一下 简介 从 Spring Boot 项目名称中的 Boot 可以看出来,Spring Boot 的作用在于创建和启动新的基于 Spring 框架的项目。它的目的是帮助开发人员很容易的创建出独立运行和产品级别的基于 Sp

  • 我创建了一个简单的Maven项目,没有原型,一切都很好。然后我添加了一个CVA。主/资源目录下的pmml文件。之后,我想读取该文件,但得到了FileNotFoundException。我尝试了以下方法: 方法一: 方法二: 方法3: 方法四: 它们都不起作用。有什么建议吗? 以下是项目结构的屏幕截图:

  • 本文向大家介绍SpringBoot整合mybatis结合pageHelper插件实现分页,包括了SpringBoot整合mybatis结合pageHelper插件实现分页的使用技巧和注意事项,需要的朋友参考一下 SpringBoot整合mybatis分页操作 SpringBoot整合Mybatis进行分页操作,这里需要使用Mybatis的分页插件:pageHelper, 关于pageHelper的