springboot集成mybatis
当项目springboot框架集成mybatis的时候,需要注意以下两点:
1.xml文件编译不到项目中去;
2.mapper接口没有被扫描到;
3.xml文件被编译到项目中,但是没有和mapper形成对应关联关系;
4.xml文件被编译到项目中,但是运行报错提示没有对应的mapper方法;
博主整理经验分享如下:
第一点问题:一般存在于xml定义在项目src/java 目录下,如果xml定义在src/resources目录下不会存在此问题(并且好像是IDEA存在此问题),解决方式如下:对应xml的模块或者项目pom.xml下,定义资源文件让xml编译到项目中
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>
**/*.xml
</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
</build>
然后再mvn -U clean 更新项目,一般可解决此问题
第二点问题:如果是springboot项目,有两种方式解决:
a)在每一个mapper接口类上标注@Mapper的注解(mapper多时候繁琐)
b)在springboot启动类上增加@mapperScan({"com.xxx.xxx.**.*Mapper"}),可以逗号多个包,这里可以用通配符也可以直接写具体的包名
第三点问题:一般存在于自定义的mapper接口和xml文件,注意xml中的<mapper namespace="xxxxx"/>注意xxx是否对应了mapper接口类的全路径名。
第四点问题:当时折腾很久,特地记录分享。以便后续有朋友需要:这种问题一般在运行的时候报错提示:com.ibatis.xxxxmapper.xxx() not found....这个问题的解决方式:
分析:注意前面的问题解决了xml的编译和mapper的映射关系,但是这个时候mybatis还有进行相应的xml文件管理或者mapper方法的映射吧(我是这样理解)
解决:在yml配置文件中,配置mapper-locations:
mybatis-plus:(我项目使用的是mybatis-plus,有兴趣可以了解以下)
type-aliases-package: com.zhiche.opbaas.domain.mapper
mapper-locations: classpath*:com/zhiche/opbaas/domain/**/*Mapper.xml