当前位置:Gxlcms > 数据库问题 > spring boot使用注解的方式引入mybatis的SqlSessionDaoSupport

spring boot使用注解的方式引入mybatis的SqlSessionDaoSupport

时间:2021-07-01 10:21:17 帮助过:17人阅读

/* * 顶层接口 */ @Mapper @Repository public class ObjectDao<T> extends SqlSessionDaoSupport { @Autowired private SqlSessionFactory sqlSessionFactory; /** * 获取对象<br /> * 对象ID可能为字符串类型也可能为整型等其它类型,故设置为Object类型 * * @param statement 操作名称 * @param objectId 对象ID * @return 对象 */ ............ }

以前都是通过配置文件配置的mybatis. 现在要迁移到spring boot上都是用注解的方式. 就出现了一个问题, 提示说sqlSesstionFactory不存在. 看源码我知道是因为这个类没有被spring扫描到(因为没有加注解), 所以需要通过@Bean引入引来, 但引入了多次都没有成功. 最后参考多篇文章, 成功了. 

主要参考:

https://blog.csdn.net/weixin_36795183/article/details/79043307

http://www.cnblogs.com/liaoguanwang/p/9769976.html

======================================================================

具体操作如下, 一共两步骤:

1. 定义一个mybatis的配置文件类

@Configuration
public class MybatisConfiguration implements TransactionManagementConfigurer{

    @Autowired
    private DataSource dataSource;

    // 提供SqlSeesion
    @Bean
    public SqlSessionFactory sqlSessionFactory() throws Exception {
        SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
        sessionFactory.setDataSource(dataSource);
        return sessionFactory.getObject();
    }

    @Bean
    public PlatformTransactionManager annotationDrivenTransactionManager() {
        return new DataSourceTransactionManager(dataSource);
    }

}

2. 在ObjectDao引入的时候, 使用如下方法

*
 * 顶层接口
 */
@Mapper
@Repository
public class ObjectDao<T> extends SqlSessionDaoSupport {

    @Resource
    public void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory){
        super.setSqlSessionFactory(sqlSessionFactory);
    }

    /*@Autowired
    private  SqlSessionFactory sqlSessionFactory;*/

      .......
}

具体原因: 参考上面的第一篇文章

spring boot使用注解的方式引入mybatis的SqlSessionDaoSupport

标签:throw   class   nsa   stat   问题   common   http   sql   存在   

人气教程排行