spring boot 自动生成的mapper 接口文件无法注入,已经添加@MapperScan 注解

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
        PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
        "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">

<generatorConfiguration>
    <properties resource="application.properties"/>

    <context id="Mysql" targetRuntime="MyBatis3Simple" defaultModelType="flat">
                <property name="beginningDelimiter" value="`"/>
        <property name="endingDelimiter" value="`"/>

        <!-- 使用通用Mapper的插件 -->
        <plugin type="tk.mybatis.mapper.generator.MapperPlugin">
            <property name="mappers" value="com.mall.demo.util.MyMapper"/>
        </plugin>

        <jdbcConnection driverClass="${spring.datasource.driver-class-name}"
                        connectionURL="${spring.datasource.url}"
                        userId="${spring.datasource.username}"
                        password="${spring.datasource.password}">
        </jdbcConnection>

        <javaModelGenerator targetPackage="com.mall.demo.model" targetProject="src/main/java" >
            <property name="enableSubPackages" value="true" />
        </javaModelGenerator>

        <sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources">
            <property name="enableSubPackages" value="true" />
        </sqlMapGenerator>

        <javaClientGenerator targetPackage="com.mall.demo.mapper" targetProject="src/main/java" type="XMLMAPPER">
            <property name="enableSubPackages" value="true" />
        </javaClientGenerator>

        <table tableName="category">
            <!--mysql 配置-->
            <!--<generatedKey column="id" sqlStatement="Mysql" identity="true"/>-->
            <!--oracle 配置-->
            <!--<generatedKey column="id" sqlStatement="select SEQ_{1}.nextval from dual" identity="false" type="pre"/>-->
        </table>
    </context>
</generatorConfiguration>

spring boot 入口文件:

package com.mall.demo;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@MapperScan(basePackages = "com.mall.demo.mapper")
public class MallProjectApplication {

    public static void main(String[] args) {
        SpringApplication.run(MallProjectApplication.class, args);
    }
}

使用的编辑器是IDEA ,service实现类中使用Autowired注入,但运行 依然提示没有注入成功。
错误信息如下:

Description:

Field categoryMapper in com.mall.demo.service.impl.CategoryServiceImpl required a bean of type 'com.mall.demo.mapper.CategoryMapper' that could not be found.


Action:

Consider defining a bean of type 'com.mall.demo.mapper.CategoryMapper' in your configuration.
阅读 25.2k
3 个回答

这种问题一般是@Mapper注解没有加到接口上的缘故,楼主检查一下"com.mall.demo.util.MyMapper"包下的类中是否有如下的注解

clipboard.png

非常感谢, 问题解决了。
问题是idea没有引入本地仓库中的一个包(本地仓库有tk.mybatis.mapper包),
解决方法:重装了一个maven,idea配置新的本地仓库。重新下载jar包就好了。

至于 ,为什么idea无法跟新本地仓库的jar包 还没有检查到原因,(删除jar包后,auto import 没有下载到本地,且pom没有报错)

新手上路,请多包涵

哎 我也遇到了这个问题,和你的情况一模一样,可是我又不想重新装本地库

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