@MapperScan注解需要在pom.xml导入什么

@MapperScan注解需要在pom.xml导入什么,第1张

如下:

<?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="`"/>

在SpringBoot中集成MyBatis,可以在mapper接口上添加@Mapper注解,将mapper注入到Spring,但是如果每一给mapper都添加@mapper注解会很麻烦,这时可以使用@MapperScan注解来扫描包。

经测试发现,@MapperScan注解只会扫描包中的接口,不会扫描类,所以可以在包中写Provider类。

@MapperScan("com.demo.mapper"):扫描指定包中的接口。

@MapperScan("com.demo.*.mapper"):一个*代表任意字符串,但只代表一级包,比如可以扫到com.demo.aaa.mapper,不能扫到com.demo.aaa.bbb.mapper.

@MapperScan("com.demo.**.mapper"):两个*代表任意个包,比如可以扫到。com.demo.aaa.mapper,也可以扫到com.demo.aaa.bbb.mapper.

你是用的spring-mybatis整合还是单独用的,我是用的整合,你看下你那xml里面是不是没有这句话<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">

解决@Autowired爆红的方案有四个:

1.mapper加入@Mapper注解(启动类可省去@MapperScan),因为@Mapper的文件会被去自动扫描注入,但是需要全体Mapper文件都加

2.mapper加入@Repository注解(启动类必须加@MapperScan)

3.mapper加入@Component注解(启动类必须加@MapperScan)

4.改@Autowired为@Resource,但程序运行报不报错还取决于mapper注入正确与否(看mapper文件用了什么注解以及启动类是否配了@MapperScan)

简单来说就是两种情况:

- 启动类配置了@MapperScan且路径正确,mapper接口文件可以不配任何注解(当然你也可以随意写上@Mapper,@Respository,@Component注解,不会有任何影响)

- 启动类未配置了@MapperScan,则Mapper接口文件必须配置@Mapper注解

笔者推荐最简方案:

启动类加@MapperScan 配合使用 @Resource (替换@Autowired)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11774002.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存