可参考示例:
springboot整合mybatis完整版part1
https://blog.youkuaiyun.com/wangyongx_123/article/details/106521184
1、整合时的注意点
1)xml格式的mapper最好放在resources目录下!避免一些后续的配置!
切记:resources 下创建存放 xml格式 mapper的文件夹必须这样创建:
com/example/springboottest/entity 这个很重要!
(有兴趣的可以自己尝试其他方式!本突不推荐!)
2) 接口格式的mapper和xml格式的mapper所在的包名最好保持一致!避免出错!
3) 接口格式的mapper所在的包名与 xml格式的mapper中,namespace保持一致!
4)一定不要忘记在 application.properties 中配置xml格式的mapper所在的位置!
springboot启动类启动时要加载application.properties 中所有的配置!
注意:
如果你的接口格式mapper所在的包名与 xml格式mapper所在的resources目录下的包名不同,可以在
application.properties 配置正确的路径!(不推荐!)
5) 如果想要在xml格式mapper中 省略 javabean的包名,只写类名,可直接在application.properties中进行配置!
#指定实体类所在包名
mybatis.type-aliases-package=com.example.springboottest.entity
2、测试类中的注意点
package com.example.springboottest;
// ... 省略
@SpringBootTest
class SpringbootTestApplicationTests {
//@Resource
@Autowired(required = false)
private MyClassMapper myClassMapper;
@Test
void testFindAll() {
List<MyClass> all = myClassMapper.findAll();
for(MyClass myClass:all){
System.out.println("班级信息:"+myClass);
}
}
}
在以上测试类中,经常出错的点在于 依赖注入mapper接口时如何正确的使用注解!
此处的关键点在于@Resource 注解和 @Autowired注解 使用时的区别
1) 如果要使用@Resource注入,直接加@Resource即可
如果要使用@Autowired注入,必须设置@Autowired注解的属性required=false
2) @Resource 注解和 @Autowired注解的区别
@AutoWired 默认根据类型匹配 (或者类型的子类匹配)。
默认情况下,要求依赖的对象必须存在,如果要允许null值,
要设置它的required属性为false, 如@Autowired(required=false) ,否则必然编译时报错!
而@Resource 可以根据id/name找,也可以根据类型找
这里的根据类型,或者id/name 找 ,标准是该注解所加在的属性,改属性对应的一些特性!
此文希望可以帮助到大家。如有错误,请指教。
如果大家还有其他的情况或者好的解决方法,也望指教,感谢阅读