当前位置: 首页 > 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 的解法
  • [分享]iOS开发-关于在xcode中引用文件夹右边出现问号的解决办法
  • 【每日笔记】【Go学习笔记】2019-01-10 codis proxy处理流程
  • 2017 年终总结 —— 在路上
  • interface和setter,getter
  • JavaScript 奇技淫巧
  • JavaScript 无符号位移运算符 三个大于号 的使用方法
  • JAVA之继承和多态
  • Making An Indicator With Pure CSS
  • PAT A1120
  • Three.js 再探 - 写一个跳一跳极简版游戏
  • Vue 2.3、2.4 知识点小结
  • 阿里中间件开源组件:Sentinel 0.2.0正式发布
  • 回顾2016
  • 将回调地狱按在地上摩擦的Promise
  • 名企6年Java程序员的工作总结,写给在迷茫中的你!
  • 巧用 TypeScript (一)
  • 因为阿里,他们成了“杭漂”
  • 不要一棍子打翻所有黑盒模型,其实可以让它们发挥作用 ...
  • ​ 轻量应用服务器:亚马逊云科技打造全球领先的云计算解决方案
  • #Linux杂记--将Python3的源码编译为.so文件方法与Linux环境下的交叉编译方法
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第5节(封闭类和Final方法)
  • (笔试题)合法字符串
  • (二) Windows 下 Sublime Text 3 安装离线插件 Anaconda
  • (附源码)springboot 校园学生兼职系统 毕业设计 742122
  • (附源码)ssm户外用品商城 毕业设计 112346
  • (每日持续更新)jdk api之StringBufferInputStream基础、应用、实战
  • (十)DDRC架构组成、效率Efficiency及功能实现
  • (十六)串口UART
  • (算法)求1到1亿间的质数或素数
  • (原創) 未来三学期想要修的课 (日記)
  • (中等) HDU 4370 0 or 1,建模+Dijkstra。
  • .CSS-hover 的解释
  • .L0CK3D来袭:如何保护您的数据免受致命攻击
  • .NET 2.0中新增的一些TryGet,TryParse等方法
  • .Net中wcf服务生成及调用
  • .Net转前端开发-启航篇,如何定制博客园主题
  • @Repository 注解
  • [ IOS ] iOS-控制器View的创建和生命周期
  • [ vulhub漏洞复现篇 ] ECShop 2.x / 3.x SQL注入/远程执行代码漏洞 xianzhi-2017-02-82239600
  • []AT 指令 收发短信和GPRS上网 SIM508/548