mybatis那些约定的配置你真的都了解吗(经验总结)

 更新时间:2021年06月25日 12:07:59   作者:如何在3年拿到50K  
mybatsi中Mapper和xml文件之间有很多约定俗称的规则,比如名称匹配,包扫描,别名等,这些规则是什么。如果想更加灵活,该如何配置呢?今天就给大家讲一下如何配置mybatsi的xml文件

背景

在springboot中有很多约定大于配置的规则,如果我们准守了约定,可以零配置。mybatsi中Mapper和xml文件之间有很多约定俗称的规则,比如名称匹配,包扫描,别名等,这些规则是什么。如果想更加灵活,该如何配置呢?今天就给大家讲一下如何配置mybatsi的xml文件等。

一、@Mapper注解和@MapperScan注解使用说明

  • 可以不使用@MapperScan注解,默认扫描根路径下标注了@Mapper注解的接口
  • 可以使用@Mapper注解,使用@MapperScan(“com.kouryoushine.mybatis.demo.mapper”),告诉spring该包下的接口都作为Mapepr对象扫描到容器中
  • 两个注解都不使用,报如下错误。在根路径下扫描不到任何Mapper
  • No MyBatis mapper was found in ‘[com.kouryoushine.mybatis.demo]' package. Please check your configuration.

二、 mapper代理方法必须一致

mapper代理方法

–程序员只需要mapper接口和mapper.xml映射文件,mybatis可以自动生成mapper接口实现类代理对象。
–程序员编写mapper接口需要遵循一些开发规范。

mapper代理开发规范

  •  在mapper.xml中namespace等于mapper接口地址
  • mapper.java接口中的方法名和mapper.xml中statement的id一致
  • mapper.java接口中的方法输入参数类型和mapper.xml中statement的parameterType指定的类型一致。
  • mapper.java接口中的方法返回值类型和mapper.xml中statement的resultType指定的类型一致。
  • mapper.xml文件名应该和接口名保持一致,否则也可能出现不匹配

二、xml文件的位置

位置1:放在resource目录下相同目录结构

这种方式无需额外的配置,但并不推荐。

在这里插入图片描述

位置2:放在resource下任意目录

比如指定mapper-location的位置,否则扫描不到

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

位置3:和mapper接口放在同一目录下

这种情况下比较特殊,其实是能扫描到这个xml文件的,只是打包时不会打进去。可以通过添加如下配置将xml打包进去。

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

注:没有上述配置时target是没有mapper.xml文件的,大家可以自己尝试

在这里插入图片描述

总结

虽然有多种方式都可以达成配置,但还是推荐加上注解同时指定好扫描路径。

以上就是mybatis那些约定的配置你真的都了解吗的详细内容,更多关于mybatis配置的资料请关注脚本之家其它相关文章!

相关文章

  • Java日常练习题,每天进步一点点(62)

    Java日常练习题,每天进步一点点(62)

    下面小编就为大家带来一篇Java基础的几道练习题(分享)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望可以帮到你
    2021-08-08
  • Java线程安全和锁Synchronized知识点详解

    Java线程安全和锁Synchronized知识点详解

    在本篇文章里小编给大家分享的是关于Java线程安全和锁Synchronized相关知识点,有需要的朋友们可以参考下。
    2019-08-08
  • 使用redisTemplate的scan方式删除批量key问题

    使用redisTemplate的scan方式删除批量key问题

    这篇文章主要介绍了使用redisTemplate的scan方式删除批量key问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • 解决方法A调用方法B的事务控制问题

    解决方法A调用方法B的事务控制问题

    这篇文章主要介绍了解决方法A调用方法B的事务控制问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • Java面试之动态规划与组合数

    Java面试之动态规划与组合数

    这篇文章主要介绍了Java面试之动态规划与组合数的相关知识,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-09-09
  • spring boot基于DRUID实现数据源监控过程解析

    spring boot基于DRUID实现数据源监控过程解析

    这篇文章主要介绍了spring boot基于DRUID实现数据源监控过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • Java基础之容器LinkedList

    Java基础之容器LinkedList

    这篇文章主要介绍了Java基础之容器LinkedList,文中有非常详细的代码示例,对正在学习java基础的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-04-04
  • Java使用RandomAccessFile类对文件进行读写

    Java使用RandomAccessFile类对文件进行读写

    本篇文章主要介绍了Java使用RandomAccessFile类对文件进行读写,详细的介绍了RandomAccessFile类的使用技巧和实例应用,有兴趣的可以了解一下
    2017-04-04
  • Java switch case语句举例详解

    Java switch case语句举例详解

    这篇文章主要给大家介绍了关于Java switch case语句举例详解的相关资料,switch case语句是一种流程控制语句,用于根据不同的条件执行不同的代码块,需要的朋友可以参考下
    2023-10-10
  • MyBatis实现模糊查询的几种方式

    MyBatis实现模糊查询的几种方式

    这篇文章主要介绍了MyBatis实现模糊查询的几种方式,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08

最新评论