当前位置: 首页 > news >正文

@Mapper作用

使用@mapper后,不需要在spring配置中设置扫描地址,通过mapper.xml里面的namespace属性对应相关的mapper类,spring将动态的生成Bean后注入到ServiceImpl中


@Mapper注解是由Mybatis框架中定义的一个描述数据层接口的注解,注解往往起到的都是一个描述性作用,用于告诉sprigng框架此接口的实现类由Mybatis负责创建,并将其实现类对象存储到spring容器中。


不写mapper注解也可以:

使用MapperScannerConfigurer这个类之后就能达到不使用注解的效果了。


如果Mapper.xml与Mapper.class在同一个包下且同名,spring扫描Mapper.class的同时会自动扫描同名的Mapper.xml并装配到Mapper.class。

如果Mapper.xml与Mapper.class不在同一个包下或者不同名,就必须使用配置mapperLocations指定mapper.xml的位置。

此时spring是通过识别mapper.xml中的 <mapper namespace="com.fan.mapper.UserDao"> namespace的值来确定对应的Mapper.class的。

    <!--  mybatis核心配置  -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!--数据库连接池-->
        <property name="dataSource" ref="dataSource"/>
        <!--加载mybatis全局配置文件-->
        <property name="configLocation" value="classpath:mybatis/mybatis-config.xml"/>
        <!--mapper.xml所在位置-->
        <property name="mapperLocations" value="classpath*:mapper/*Mapper.xml" />
        <!--指定需要使用别名的PO类所在的包-->
        <property name="typeAliasesPackage" value="com.liuyanzhao.ssm.blog.entity" />
    </bean>

    <!--mapper扫描器-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <!--如果需要扫描多个包,中间使用半角逗号隔开-->
        <property name="basePackage" value="com.liuyanzhao.ssm.blog.mapper"></property>
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
    </bean>

相关文章:

  • 易语言删除换行符
  • Training: ASCII (Training, Encoding) 的解决
  • Training: WWW-Robots (HTTP, Training)
  • Node.js中 打印让输出不换行
  • Typecho博客 通过修改后台管理员昵称 来减少安全隐患
  • idea复制css img静态资源 不显示
  • idea jsp隐藏了nbsp
  • <div class=“clear“></div>
  • jsp使用include文件中的变量
  • jsp <%= 和 ${}
  • mac chrome 无缓存刷新
  • [WeChall]Training: Stegano I的解法
  • Caesar I (Crypto, Training) 的多种简单解法
  • 简单在线提取查看 清晰QQ头像的API 可以定义图片尺寸
  • 超级简单题目 [WeChall] Training: Get Sourced 的解法
  • Android 初级面试者拾遗(前台界面篇)之 Activity 和 Fragment
  • ES10 特性的完整指南
  • HomeBrew常规使用教程
  • Java 最常见的 200+ 面试题:面试必备
  • LeetCode29.两数相除 JavaScript
  • Linux编程学习笔记 | Linux IO学习[1] - 文件IO
  • mysql常用命令汇总
  • 聊聊springcloud的EurekaClientAutoConfiguration
  • 试着探索高并发下的系统架构面貌
  • 怎么把视频里的音乐提取出来
  • 《TCP IP 详解卷1:协议》阅读笔记 - 第六章
  • Spring Batch JSON 支持
  • 国内开源镜像站点
  • #Spring-boot高级
  • (16)UiBot:智能化软件机器人(以头歌抓取课程数据为例)
  • (env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序
  • (编译到47%失败)to be deleted
  • (草履虫都可以看懂的)PyQt子窗口向主窗口传递参数,主窗口接收子窗口信号、参数。
  • (每日持续更新)jdk api之FileFilter基础、应用、实战
  • (排序详解之 堆排序)
  • (十) 初识 Docker file
  • .Net Web项目创建比较不错的参考文章
  • .net 托管代码与非托管代码
  • .NET成年了,然后呢?
  • .NET正则基础之——正则委托
  • .NET中winform传递参数至Url并获得返回值或文件
  • []T 还是 []*T, 这是一个问题
  • [Asp.net MVC]Bundle合并,压缩js、css文件
  • [C#基础知识]专题十三:全面解析对象集合初始化器、匿名类型和隐式类型
  • [C++提高编程](三):STL初识
  • [G-CS-MR.PS02] 機巧之形2: Ruler Circle
  • [IE技巧] 如何关闭Windows Server版IE的安全限制
  • [iOS]-NSTimer与循环引用的理解
  • [javaee基础] 常见的javaweb笔试选择题含答案
  • [linux] git lfs install 安装lfs
  • [Machine Learning] Learning with Noisy Labels
  • [Step By Step]SAP HANA创建属性视图(Attribute View)
  • [Vue] 自定义命令
  • [Web开发] 微软的 PHP+IIS+WinServer 开发培训资料/示例代码
  • [毕业生的商业软件开发之路]C#可访问级别