spring与mybatis集成配置文件的工作流程(注解)

一开始使用注解和Mybatis进行集成,想不明白它的工作流程,想了很久终于想通了(如果想不通流程的话,我是没有心情继续下去的)


各个注解的作用

1.@repository 告诉spring这个要跟数据库做操作的接口(要用接口接受);自动加入到spring的bean中id就是这个鬼名字(BookMapper)

package com.zking.ssm.mapper;

import com.zking.ssm.model.Book;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository/*提示spring这是跟数据库执行相关操作的*/
public interface BookMapper {
    int deleteByPrimaryKey(Integer id);

    int insert(Book record);

    int insertSelective(Book record);

    Book selectByPrimaryKey(Integer id);

    int updateByPrimaryKeySelective(Book record);

    int updateByPrimaryKey(Book record);

    List<Book> queryBookPager(Book book);
}


//分割(下面是ApplicationContext中的)//

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <!--basePackage 属性是映射器接口文件的包路径。-->
        <!--你可以使用分号或逗号 作为分隔符设置多于一个的包路径-->
        <property name="basePackage" value="com/zking/ssm/**/mapper"/>
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
</bean>

就是上面的理解不了啊,很烦;想了很久;看到一个网站才明白:https://www.cnblogs.com/daxin/p/3545040.html
	上面的bean就是扫描mapper下的接口,并实现这些接口(就是@Repository注解过的。)
	下面就是上方代码生成的方式。终于知道了

<!--Mybatis MapperScannerConfigurer 自动扫描 将Mapper接口生成代理注入到SpringMybatis在与Spring集成的时候可以配置MapperFactoryBean来生成Mapper接口的代理
        <bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
          <property name="mapperInterface" value="org.mybatis.spring.sample.mapper.UserMapper" />
          <property name="sqlSessionFactory" ref="sqlSessionFactory" />
        </bean>
    -->



2.@Service 用于逻辑层(就是接口的实现类,imp结尾的一个东西);自动将这东西加入到bean中

@Transactional/*事务*/
@Service/*自动加入spring的bean*/
public class BookServiceImpl implements IBookService {

    @Autowired/*自动装配get set*/
    private BookMapper bookMapper;

    @Transactional
    @Override
    public int insertBook(Book book) {
        return bookMapper.insert(book);
    }

    @Transactional(readOnly = true)
    @Override
    public List<Book> queryBookPager(Book book, PageBean pageBean) {
        return bookMapper.queryBookPager(book);
    }
}

那么在applicationContext中其实有很多的bean了,只是我们看不见,交。由注解来完成了。我们要调用方法了。
在这里插入图片描述

里面就是这么点东西
在这里插入图片描述
实现类
在这里插入图片描述

调用了分页方法,其中是实现类中有个bookMapper,这个对象可不得了,可以操作数据库的(不知道的看@repository的注解),而实现类中有@Service标签,spring中有这个bean,并且又往其中加了这个bookMapperd的bean。你可以想象成这样

<bean id="类名" class="类的地址" parent="实现的模块">
	<property name="bookMapper">这就是要进行set
		<ref bean="bookMapper"/>	这就是把bookMapper的组件加入到实现类中
	</property>		
</bean>

这样实现类中的bookMapper就有作用了。


重点就是这个啦:这个自动扫描是和@Repository不知道是什么关系,我把在方法中@Repository删除掉都是对的,我认为这句话已经帮我完成了@Repository的操作; (这是我对这个spring与mybatis关系的理解,或许有错误,但我一定要把关系给搞通,流程要清楚。不然我会疯)
<property name="basePackage" value="com/zking/ssm/**/mapper"/>

在这里插入图片描述

<!--2) 自动扫描com/zking/ssm/**/mapper下的所有XxxMapper接口(其实就是DAO接口),并实现这些接口,-->
    <!--   即可直接在程序中使用dao接口,不用再获取sqlsession对象-->
    <!--Mybatis MapperScannerConfigurer 自动扫描 将Mapper接口生成代理注入到SpringMybatis在与Spring集成的时候可以配置MapperFactoryBean来生成Mapper接口的代理
        <bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
          <property name="mapperInterface" value="org.mybatis.spring.sample.mapper.UserMapper" />
          <property name="sqlSessionFactory" ref="sqlSessionFactory" />
        </bean>
        这是下面代码需要自动生成的一个东西;要取一个id,
    -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <!--basePackage 属性是映射器接口文件的包路径。-->
    <!--你可以使用分号或逗号 作为分隔符设置多于一个的包路径-->
    <property name="basePackage" value="com/zking/ssm/**/mapper"/>
    <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
</bean>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值