ssm mybatis如何配置多个mapper目录

 更新时间:2022年01月10日 10:16:26   作者:信行合一  
这篇文章主要介绍了ssm mybatis如何配置多个mapper目录,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教。

ssm mybatis配置多个mapper目录

通配符配置

比如目录的结构如下:

com/test/web/user/mapper
com/test/web/order/mapper
com/test/web//mapper

<!-- 扫描 xxxMapper.xml -->   
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="configLocation"  value="classpath:spring/mybatis-config.xml"/>  
        <property name="mapperLocations" value="classpath*:com/xxxcompany/xxxproject/*/mapper/*.xml" />
    </bean>

<!-- 扫描 xxxMapper -->
    <bean id="daoScan" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.xxxcompany.xxxproject.*.mapper" />
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
    </bean>

除了上面这种目录结构一致的方式,我们还可以使用下面的配置方式,这个意思也就是说只要是符合mapper* 这样的命名规则的包都会被扫描到

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="configLocation"  value="classpath:mybatis-config.xml"/>  
        <property name="mapperLocations" value="classpath*:com/dada/**/*Mapper.xml"/> 
    </bean>

    <!-- 配置扫描器 -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.dada.test.mapper*"/>
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
    </bean>

ssm项目 mappers标签

mappers标签标签的作用

为了让mybatis找到mapper.xml文件。

在后面的ssm整合项目中,有两种方式可以代替它

  1. 一个是使用MapperScannerConfigurer
  2. 一个是使用mapperLocation属性(位于SqlSessionFactoryBean中):mapperLocation属性,主要用于指定mapper.xml文件所处的位置。

MapperScannerConfigurer可以自动扫描到和接口同包同名的mapper.xml文件

mapperLocation属性可以指定扫描。

下面来个逆向思考!!!

在ssm项目中,将mapper.xml文件放进和dao接口不同的包中,这样的话MapperScannerConfigurer的自动扫描就扫描不到mapper.xml文件了。然后不使用mapperLocation属性,意思就是使用mappers标签来代替两个新方法,来验证一下。

但是结果却和我想的不一样!!!下面我来说我遇到的一些坑!!!

mappers标签的配置方式有4种

<!-- 1.使用相对于类路径的资源引用 -->
<mappers>
  <mapper resource="org/mybatis/builder/AuthorMapper.xml"/>
</mappers>
<!-- 2.使用完全限定资源定位符(URL) -->
<mappers>
  <mapper url="file:///var/mappers/AuthorMapper.xml"/>
</mappers>
<!-- 3.使用映射器接口实现类的完全限定类名 -->
<mappers>
  <mapper class="org.mybatis.builder.AuthorMapper"/>
  <mapper class="org.mybatis.builder.BlogMapper"/>
  <mapper class="org.mybatis.builder.PostMapper"/>
</mappers>
<!-- 4.将包内的映射器接口实现全部注册为映射器 -->
<mappers>
  <package name="org.mybatis.builder"/>
</mappers>
  1. 使用第3种和第4种方法需要和MapperScannerConfigurer一样,将mapper.xml文件和dao接口同名同包。
  2. 对于第一种方法,我们需要注意的是:/ 和 .

蜿蜒曲折的探究道路

对于指定类路径的资源引用的方式,也就是第一种方式,我将mapper.xml文件所在包放进了dao接口所在包的子包。结果idea提示说找不到mapper.xml文件,然后我又调了一会(将mapper.xml文件所在包改变位置后)可以正常运行,然后我就以为mapper.xml文件所在包不能放进了dao接口所在包的子包。我又重新把mapper.xml文件所在包放进了dao接口所在包的子包,结果能正常运行了。

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

相关文章

  • java 输出九九乘法表口诀的代码

    java 输出九九乘法表口诀的代码

    这篇文章主要介绍了java 输出9*9口诀的代码,需要的朋友可以参考下
    2017-02-02
  • 腾讯云部署javaWeb项目的实现步骤

    腾讯云部署javaWeb项目的实现步骤

    本文主要介绍了腾讯云部署javaWeb项目的实现步骤,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • Java的MyBatis快速入门和实战详解

    Java的MyBatis快速入门和实战详解

    这篇文章主要介绍了Java的MyBatis快速入门和实战详解,MyBatis是一款优秀的持久层框架,用于简化JDBC开发,是一套可重用的,通用的,软件基础代码模型,需要的朋友可以参考下
    2023-05-05
  • java中Lambda常用场景代码实例

    java中Lambda常用场景代码实例

    这篇文章主要介绍了java中Lambda常用场景,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • SpringBoot使用JSP作为视图模板的方法

    SpringBoot使用JSP作为视图模板的方法

    这篇文章主要介绍了SpringBoot使用JSP作为视图模板的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08
  • java定时调度器(Quartz)使用实例

    java定时调度器(Quartz)使用实例

    这篇文章主要介绍了java开源定时调度器使用方法
    2013-12-12
  • Spring5使用JSR 330标准注解的方法

    Spring5使用JSR 330标准注解的方法

    从Spring3.0之后,除了Spring自带的注解,我们也可以使用JSR330的标准注解,本文主要介绍了Spring5使用JSR 330标准注解,感兴趣的可以了解一下
    2021-09-09
  • Java堆内存又溢出了!教你一招必杀技(推荐)

    Java堆内存又溢出了!教你一招必杀技(推荐)

    这篇文章主要介绍了Java内存溢出问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • JVM实战系列之CPU100%和内存100%排查

    JVM实战系列之CPU100%和内存100%排查

    本文主要介绍了JVM实战系列之CPU100%和内存100%排查,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • Idea中mapper注入报错问题及解决

    Idea中mapper注入报错问题及解决

    这篇文章主要介绍了Idea中mapper注入报错问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03

最新评论