Springboot整合MyBatis框架相关问题

编程

1、整合准备

        首先是构建自己的 Spring boot 项目,不做赘述,然后加上 MyBatis 的依赖,我用的是 maven 管理项目,所以依赖添加是这样的:

<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.1.0</version>
</dependency>

        接着是配置自己的数据源之类的,整合准备就基本完成了。(此段简略是因为即使不使用 MyBatis 都是必做的工作)

2、配置映射

        我们会给每个 MyBatis 的xml配置文件都写一个对应的映射接口,希望让 MyBatis 框架认识到:“这个接口是一个映射接口”的方法有两个:

  1. 该接口上使用注解 @Mapper 即可,这样的缺点是每个接口都需要加上注解会比较麻烦,方法二会更加省事。
  2. 接口上不用注解,而是在配置文件(或者直接在 xxAplication 启动类)上加上注解 @MapperScan 注明 mapper 接口的路径即可,示例如下:@MapperScan("com.kfit.*.mapper") 或 @MapperScan({"com.kfit.demo","com.kfit.user"})

        接着,我们写的 xml 文件需要在 mapper 标签的 namespace 属性上写上其对应的 mapper 接口的完全名称(包名+类名)

<mapper namespace="com.sbootbase.modules.permission.mapper.PermissionMapper">

        这样我们就基本完成了。

3、XML文件的位置

        最后一个问题是,xml文件应该放在哪里?

        在 Spring boot 上整合 MyBatis 时,有两个常见的 xml 文件放置处,分别是java目录下的 mapper 接口所在、路径resource目录下的 mapper 文件夹;这两个地方各有优劣,似乎分成两派人,互相争论。

3.1、java目录下的 mapper 接口所在路径

        这是 MyBatis 官方推荐的xml文件位置,mapper.xml文件放在这里并不需要额外的 MyBatis 相关的配置,也就是说只要 MyBatis 在你的配置中(上面第2点的配置)找到了 mapper 接口,那么它首先会在同一个目录下查找 mapper.xml 配置文件;

        但使用 maven 管理项目的话,默认情况下 java 目录下只有 java 文件会被编译成 class 文件后与 resource 目录下合并,所以xml文件放在 java 目录下会导致打包时丢失xml文件的情况,解决方法是:在pom文件中配置maven打包时明确设置包括何种资源文件即可,示例如下:

<build>
        <!-- 配置资源文件的打包路径 -->
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.*</include>
                </includes>
                <filtering>false</filtering>
            </resource>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
                <filtering>false</filtering>
            </resource>
        </resources>

    </build>

        以上示例允许在 java 目录下包含 .xml 后缀的文件,你也可以根据需要详细定义更多的打包包含文件的种类等。

3.2、resource目录下的 mapper 文件夹

        当你希望把xml文件放在 resource 目录下时,可以在yml文件(或properties文件)中做如下配置(具体根据自己的需求做合适的配置即可):

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

mybatis:
  mapper-locations: classpath:mapping/*Mapper.xml

3.3、xml文件的位置争论

        虽然 MyBatis 官方建议将xml文件放在其映射接口所在目录下,但依然有很多人喜欢把xml文件放在 resource 下,理由是xml文件是资源文件(非 Java 文件),java目录下应该只存放Java文件,资源文件则统一放在 resource 下;但是显然 MyBatis 的xml文件里是管理SQL的文件,完全可以当作是SQL代码而不是当作资源文件看待,即使它确实不是 .java 后缀的文件。显而易见的是:mapper映射接口与mapper.xml配置文件是配合使用的,两者分离并不是最佳选择。

        所以我还是觉得遵循 MyBatis 官方的建议,建议将xml文件放在其映射接口所在目录下才是最佳选择,MyBatis 也是默认到相关目录中去寻找配置文件的,我们需要做的是在pom文件中把xml文件包括进去,使得打包不会漏掉文件即可。

4、MyBatis Plus 3.x

        MyBatis Plus 作为 MyBatis 的增强插件,非常好用,从3.x版本开始,使得编码大大减少,基于 JDK8 的 MyBatis Plus 使得很多新特性得以运用,诸如 lambda 和 方法引用 等。

 

以上是 Springboot整合MyBatis框架相关问题 的全部内容, 来源链接: utcz.com/z/512052.html

回到顶部