spring整合使用mybatis的接口,但使用时显示在spring容器内找不到dao的接口对象。

本来已经整合了spring和springmvc,然后我再添加了mybatis的依赖,数据库的配置等等。在test类里mybatis可以单独运作。但是和spring整合的时候就出现问题.

这是我的目录结构
图片说明

我的dao中的类如下

@Repository
public interface IAccountDao
{
    @Select("select * from account")
    List<Account> findAll();

    @Insert("insert into account(name,money) values (#{name},#{money})")
    void saveAccount(Account account);
}

service中的类如下

@Service("accountService")
public class AccountServiceImpl implements IAccountService
{
    @Autowired
    private IAccountDao accountDao;

    @Override
    public List<Account> findAll()
    {
        System.out.println("findAll_service");
        return accountDao.findAll();
    }

    @Override
    public void saveAccount(Account account)
    {
        System.out.println("saveAccount_service");
        accountDao.saveAccount(account);
    }
}

而且我的spring的配置文件已经按照教程中那样引入了mybatis的工厂什么的

<?xml version="1.0" encoding="UTF-8"?>
<beans 一堆约束省略了>


    <context:component-scan base-package="com.HSY">

        <context:exclude-filter type="annotation"
                                expression="org.springframework.stereotype.Controller"/>
    </context:component-scan>

    <!--    整合Mybatis-->
    <!-- 配置C3P0的连接池对象 -->
    <bean id="dataSource"
          class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver" />
        <property name="url" value="jdbc:mysql://localhost:3306/ssm" />
        <property name="username" value="root" />
        <property name="password" value="123456" />

    </bean>
    <!-- 配置SqlSession的工厂 -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
    </bean>
<!--     配置扫描dao的包-->
    <bean id="mapperScanner" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.HSY.dao"/>
    </bean>

</beans>

SqlMapConfig的数据库配置也配了,但是最后仍然报错

beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.HSY.dao.IAccountDao' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}

请问大神们怎么解决

2个回答

试试把IAccountDao类上的注解去掉。

有没有配置扫描目录
扫描目录配置的与实际mapper,xml,entity位置是否一致?
检查下面三个配置两个注解,一个properties配置:@MapperScan("com....") @ComponentScan(basePackages = "com...") mybatis.mapper-locations=classpath*:mapper/*Mapper*.xml
spring整合mybatis的原理如果有兴趣可以看下这篇博客:https://blog.csdn.net/u010597819/article/details/103546894

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问