springboot项目dao层无法注入mapper

weixin_42821094 2019-12-29 02:33:27
1.报错信息如下:
Description:

Field orderVoMapper in com.liuhuiwu.service.OrderServiceImpl required a bean of type 'com.liuhuiwu.dao.OrderVoMapper' that could not be found.

The injection point has the following annotations:
- @org.springframework.beans.factory.annotation.Autowired(required=true)

Action:

Consider defining a bean of type 'com.liuhuiwu.dao.OrderVoMapper' in your configuration.


2.service层注入正常,但是mapper接口一直无法注入,试了网上大神们的各种方法,均不见效。希望求大神指点!

3.项目结构图如下

4.application.yml配置文件:
mybatis:
# mybatis配置文件所在路径
config-location: classpath:mybatis/generatorConfig.xml
mapper-locations: classpath:resources/mapping/*.xml
type-aliases-package: com.liuhuiwu.dao

5.xml文件命名空间:
<mapper namespace="com.liuhuiwu.dao.OrderVoMapper">


6.service实现类代码
 * @version 1.0
* @date 2019/11/29 19:26
*/
@Service
public class OrderServiceImpl implements OrderService{
@Autowired
OrderVoMapper orderVoMapper;
@Override
public List<OrderVo> getOrder(String phoneNumber) {
OrderVoExample example = new OrderVoExample();
OrderVoExample.Criteria criteria = example.createCriteria();
criteria.andPhoneNumberEqualTo(phoneNumber);
return orderVoMapper.selectByExample(example);
}
}

7.mapper接口代码:
package com.liuhuiwu.dao;

import java.util.List;

import com.liuhuiwu.vo.OrderVo;
import com.liuhuiwu.vo.OrderVoExample;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Component;

@Mapper
@Component(value = "OrderVoMapper")
public interface OrderVoMapper {
long countByExample(OrderVoExample example);

int deleteByExample(OrderVoExample example);

int deleteByPrimaryKey(String phoneNumber);

int insert(OrderVo record);

int insertSelective(OrderVo record);

List<OrderVo> selectByExample(OrderVoExample example);

OrderVo selectByPrimaryKey(String phoneNumber);

int updateByExampleSelective(@Param("record") OrderVo record, @Param("example") OrderVoExample example);

int updateByExample(@Param("record") OrderVo record, @Param("example") OrderVoExample example);

int updateByPrimaryKeySelective(OrderVo record);

int updateByPrimaryKey(OrderVo record);
}
...全文
2217 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Boiled_meat 2020-01-03
  • 打赏
  • 举报
回复
有了@mapper注解就不需要@Component,把@Component注解去掉,@Component不是这样用的
_沉浮_ 2020-01-02
  • 打赏
  • 举报
回复
首先,如上面所说的,xml路径需要改正,其次,查看下编译后的代码有没有把这些xml编译进去
虹猫大侠 2019-12-31
  • 打赏
  • 举报
回复
dao层加个@Mapper就可以了
虹猫大侠 2019-12-31
  • 打赏
  • 举报
回复
mybatis.mapper-locations=classpath:/mapper/*Mapper.xml
weixin_42821094 2019-12-30
  • 打赏
  • 举报
回复
引用 1 楼 Valerie00 的回复:
启动类增加注解@MapperScan(“dao层包结构路径”)
此方法,我也试过,在启动类假扫描指定包,会报找不到sqlFessionFactory等错误。如下:
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'OrderVoMapper' defined in file [F:\ideaapplication\target\classes\com\liuhuiwu\dao\OrderVoMapper.class]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1803) ~[spring-beans-5.2.1.RELEASE.jar:5.2.1.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:595) ~[spring-beans-5.2.1.RELEASE.jar:5.2.1.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:517) ~[spring-beans-5.2.1.RELEASE.jar:5.2.1.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:323) ~[spring-beans-5.2.1.RELEASE.jar:5.2.1.RELEASE]
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) ~[spring-beans-5.2.1.RELEASE.jar:5.2.1.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:321) ~[spring-beans-5.2.1.RELEASE.jar:5.2.1.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) ~[spring-beans-5.2.1.RELEASE.jar:5.2.1.RELEASE]
	at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276) ~[spring-beans-5.2.1.RELEASE.jar:5.2.1.RELEASE]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1287) ~[spring-beans-5.2.1.RELEASE.jar:5.2.1.RELEASE]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1207) ~[spring-beans-5.2.1.RELEASE.jar:5.2.1.RELEASE]
	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:636) ~[spring-beans-5.2.1.RELEASE.jar:5.2.1.RELEASE]
	... 37 common frames omitted
Caused by: java.lang.IllegalArgumentException: Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required
	at org.springframework.util.Assert.notNull(Assert.java:198) ~[spring-core-5.2.1.RELEASE.jar:5.2.1.RELEASE]
	at org.mybatis.spring.support.SqlSessionDaoSupport.checkDaoConfig(SqlSessionDaoSupport.java:122) ~[mybatis-spring-2.0.3.jar:2.0.3]
	at org.mybatis.spring.mapper.MapperFactoryBean.checkDaoConfig(MapperFactoryBean.java:73) ~[mybatis-spring-2.0.3.jar:2.0.3]
	at org.springframework.dao.support.DaoSupport.afterPropertiesSet(DaoSupport.java:44) ~[spring-tx-5.2.1.RELEASE.jar:5.2.1.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1862) ~[spring-beans-5.2.1.RELEASE.jar:5.2.1.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1799) ~[spring-beans-5.2.1.RELEASE.jar:5.2.1.RELEASE]
	... 47 common frames omitted
weixin_42821094 2019-12-30
  • 打赏
  • 举报
回复
引用 2 楼 dkwuxiang 的回复:
mapper-locations: classpath:resources/mapping/*.xml classpath: 即代表指定 resource目录下了你这里应该是 classpath:mapping/*.xml
其实这个我也改过,同样会报此错。
_Ricky_ 2019-12-30
  • 打赏
  • 举报
回复
最简单的方式,启动类(Application.java)头部加注解@MapperScan(“com.xxx.dao”)
dkwuxiang 2019-12-30
  • 打赏
  • 举报
回复
mapper-locations: classpath:resources/mapping/*.xml classpath: 即代表指定 resource目录下了你这里应该是 classpath:mapping/*.xml
dkwuxiang 2019-12-30
  • 打赏
  • 举报
回复
dao层注解使用 @Mapper,@Component(value = "OrderVoMapper")换掉试试 @Repository
_Ricky_ 2019-12-30
  • 打赏
  • 举报
回复
引用 5 楼 weixin_42821094 的回复:
[quote=引用 1 楼 Valerie00 的回复:] 启动类增加注解@MapperScan(“dao层包结构路径”)
此方法,我也试过,在启动类假扫描指定包,会报找不到sqlFessionFactory等错误。如下:
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'OrderVoMapper' defined in file [F:\ideaapplication\target\classes\com\liuhuiwu\dao\OrderVoMapper.class]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1803) ~[spring-beans-5.2.1.RELEASE.jar:5.2.1.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:595) ~[spring-beans-5.2.1.RELEASE.jar:5.2.1.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:517) ~[spring-beans-5.2.1.RELEASE.jar:5.2.1.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:323) ~[spring-beans-5.2.1.RELEASE.jar:5.2.1.RELEASE]
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) ~[spring-beans-5.2.1.RELEASE.jar:5.2.1.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:321) ~[spring-beans-5.2.1.RELEASE.jar:5.2.1.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) ~[spring-beans-5.2.1.RELEASE.jar:5.2.1.RELEASE]
	at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276) ~[spring-beans-5.2.1.RELEASE.jar:5.2.1.RELEASE]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1287) ~[spring-beans-5.2.1.RELEASE.jar:5.2.1.RELEASE]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1207) ~[spring-beans-5.2.1.RELEASE.jar:5.2.1.RELEASE]
	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:636) ~[spring-beans-5.2.1.RELEASE.jar:5.2.1.RELEASE]
	... 37 common frames omitted
Caused by: java.lang.IllegalArgumentException: Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required
	at org.springframework.util.Assert.notNull(Assert.java:198) ~[spring-core-5.2.1.RELEASE.jar:5.2.1.RELEASE]
	at org.mybatis.spring.support.SqlSessionDaoSupport.checkDaoConfig(SqlSessionDaoSupport.java:122) ~[mybatis-spring-2.0.3.jar:2.0.3]
	at org.mybatis.spring.mapper.MapperFactoryBean.checkDaoConfig(MapperFactoryBean.java:73) ~[mybatis-spring-2.0.3.jar:2.0.3]
	at org.springframework.dao.support.DaoSupport.afterPropertiesSet(DaoSupport.java:44) ~[spring-tx-5.2.1.RELEASE.jar:5.2.1.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1862) ~[spring-beans-5.2.1.RELEASE.jar:5.2.1.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1799) ~[spring-beans-5.2.1.RELEASE.jar:5.2.1.RELEASE]
	... 47 common frames omitted
[/quote] 检查下jar包是不是冲突了,比如mybatis-spring-boot-starter,或者换个版本试试
Valerie00 2019-12-29
  • 打赏
  • 举报
回复
启动类增加注解@MapperScan(“dao层包结构路径”)

67,550

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧