如下:
<?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)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)