关于mapper接口注入spring容器

 
 
mapper是接口,而接口时不能注入spring容器的,要注入就需要接口有对应的实现类,注入的应该是实现类而不是接口
而在spring中,导入MyBatis-Spring包之后,MyBatis-Spring中间件把mapper接口和mapper.xml文件对应的 代理类注册到Spring中,
因此,在service层中就能根据类型注入,使用到mapper接口的代理类调用需要的方法
 
而mapper的代理类在spring开发环境下是 利用sqlSession来获取的!!以UserMapper举例
写成:
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
    <constructor-arg index="0" ref="sqlSessionFactory"/>
</bean>

<bean id="userMapper" class="com.wang.mapper.UserMapperImpl">
    <property name="sqlSessionTemplate" ref="sqlSession"/>
</bean>

再去UserMapper的是实现类UserMapperImpl中利用sqlSessionTemplate属性调用getMapper来获得Mapper的代理类注入到spring中去

 
 
或者简写成(动态代理方式,无需显式定义实现类):
<!--4.配置dao接口扫描包,动态的实现了Dao接口,利用代理类注入到Spring容器中! -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <!--注入sqlSessionFactory -->
    <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
    <!--要扫描的dao包-->
    <property name="basePackage" value="com.wang.dao"/>
</bean>

这样写后,就无须显式实现UserMapper接口,也就是无需显示调用sqlSessionTemplate的getMapper方法来获取代理类

而只要将定义好的sqlSessionFactory以及mapper接口填到一个MapperScannerConfigurer的bean的属性中去,之后就会动态生成mapper的代理类注入到spring中去
 
 
**个人拙见,不对望批评指正**
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值