mybaits spring boot 嵌套jar包中的@mapper 扫描不到

dao项目里是可以的,dao.jar被别的项目引用,就扫描不到

日志如下:

main] o.m.s.mapper.ClassPathMapperScanner      : No MyBatis mapper was found in '[com.zhangjian.cache]' package. Please check your configuration.

application.yml

spring:
  datasource:
    type: com.mysql.jdbc.jdbc2.optional.MysqlDataSource
    url: jdbc:mysql://192.168.56.4:3306/mytest
    username: test
    password: test
    driver-class-name: com.mysql.jdbc.Driver
#    schema: classpath:import.sql
mybatis:
  mapper-locations: classpath*:database/mappers/*.xml
  type-aliases-package: com.zhangjian.entity
#  config-location: classpath:database/mybatis-config.xml
#  typeHandlersPackage:
#  check-config-location:
#  executorType:
#logging:
#  level:
#    root: WARN
#    com.zhangjian.dao: TRACE

DemoDao.java:

package com.zhangjian.dao;

import com.zhangjian.entity.DemoEntity;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;

/**
 * Created by zhangjian on 2017/5/21.
 */
@Mapper
public interface DemoDao extends BaseDao<DemoEntity>{
}

demoMapper.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zhangjian.dao.DemoDao">
。。。。。
阅读 21.5k
7 个回答

启动类加注解 @MapperScan(basePackages = "com.zhangjian.dao")

新手上路,请多包涵

配置有问题,可以把配置贴出来

我也遇到同的问题,一模一样,不知道楼主解决没有,如果解决,望回复一下

新手上路,请多包涵

service层加@AutoWired或@@Resourcele了吗?

新手上路,请多包涵

遇到同样的问题,还是没有解决,请问楼主现在解决了吗,能给点建议吗?

我目前用的是2.2.2的starter。可以关注一下这个配置org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration.MapperScannerRegistrarNotFoundConfiguration。其中代码为

  @org.springframework.context.annotation.Configuration
  @Import(AutoConfiguredMapperScannerRegistrar.class)
  @ConditionalOnMissingBean({ MapperFactoryBean.class, MapperScannerConfigurer.class })
  public static class MapperScannerRegistrarNotFoundConfiguration implements InitializingBean {

    @Override
    public void afterPropertiesSet() {
      logger.debug(
          "Not found configuration for registering mapper bean using @MapperScan, MapperFactoryBean and MapperScannerConfigurer.");
    }

  }

大概意思只要有了MapperFactoryBean.class, MapperScannerConfigurer.class这两个bean,那么就不会 @Import(AutoConfiguredMapperScannerRegistrar.class).其中AutoConfiguredMapperScannerRegistrar刚好就是注册扫描@Mapper的相关内容。

但是想要没有MapperFactoryBean.class, MapperScannerConfigurer.class这两个bean好像不可能。不过我发现在2.0.1的starter中的代码写法就不一样了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题