Bootstrap

RuoYi-Vue坑之添加Mybatis-Plus

RuoYi-Vue坑之添加Mybatis-Plus

整合Mybatis-Plus

事情是这样的最近因为之前管理平台内容太过于混乱想单独隔离一部分代码,于是从gitee上拉了ruoyi-vue的开源代码来作为新的后台,而ruoyi-vue中使用的是mybatis而之前很大一部分代码使用了mybatis-plus,因此需要手动添加mybatis-plus依赖,但是添加完依赖之后运行代码却显示如下错误。

Invalid bound statement (not found): com.ruoyi.xx.mapper.xxx.selectList

左思右想问题得不到解决,于是从网上搜寻答案,最终确定问题在ruoyi的MybatisConfig配置类中的SqlSessionFactory这段代码中。

    @Bean
    public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
        String typeAliasesPackage = env.getProperty("mybatis.typeAliasesPackage");
        String mapperLocations = env.getProperty("mybatis.mapperLocations");
        String configLocation = env.getProperty("mybatis.configLocation");
        typeAliasesPackage = setTypeAliasesPackage(typeAliasesPackage);
        VFS.addImplClass(SpringBootVFS.class);

        final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
        sessionFactory.setDataSource(dataSource);
        sessionFactory.setTypeAliasesPackage(typeAliasesPackage);
        sessionFactory.setMapperLocations(resolveMapperLocations(StringUtils.split(mapperLocations, ",")));
        sessionFactory.setConfigLocation(new DefaultResourceLoader().getResource(configLocation));
        return sessionFactory.getObject();
    }

SqlSessionFactory的bean影响到了mybatis-plus,当项目已经有配置SqlSessionFactory,mybatis-plus将不会自动帮我们注入SqlSessionFactory,而使用我们自己定义的SqlSessionFactory。

实际上mybatis-plus需要的是MybatisSqlSessionFactoryBean,而不是SqlSessionFactoryBean。<

;