0

0

SpringBoot整合MyBatis过程中可能遇到的问题有哪些

WBOY

WBOY

发布时间:2023-05-17 20:43:04

|

1567人浏览过

|

来源于亿速云

转载

尽量不要用 junit 提供的单元测试

提一个要求尽量使用SpringBoot 提供的测试类进行测试,能够自动扫描组件以及使用容器中的bean对象

还有如果有组件 中存在注入对象的话,那么必须在SpringBoot容器中取出 这个组件,进而使用注入的对象的功能!!!

今天有个错误,花了很长时间来解决,最后发现是一个很低级很基础的错误!

这是mapper接口,使用@mapper 相当于将接口的代理对象注册进入bean中,但是上下文中找不到(其实是正常)

因为 @Mapper 这个注解是 Mybatis 提供的,而 @Autowried 注解是 Spring 提供的,IDEA能理解 Spring 的上下文,但是却和 Mybatis 关联不上。而且我们可以根据 @Autowried 源码看到,默认情况下,@Autowried 要求依赖对象必须存在,那么此时 IDEA 只能给个红色警告了。

package com.bit.mapper;
import com.bit.pojo.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@Mapper
public interface UserMapper {
    User selectById(@Param("userid") Integer id);
}

这是与mapper接口对应的xml文件,同样也没有问题




        

将java目录下的xml文件加入resource资源中,在build 标签中嵌套,同样没有问题

    
            
        src/main/java        
                    
            **/*.xml        
            
    

然后我们写service层,写了一个UserService接口,有些了一个UserServiceImpl 接口的实现类

在这个实现类中,注入UserMapper 一直提示无法注入,我一直认为有问题(但是最后发现没问题)

盛世企业网站管理系统1.1.2
盛世企业网站管理系统1.1.2

免费 盛世企业网站管理系统(SnSee)系统完全免费使用,无任何功能模块使用限制,在使用过程中如遇到相关问题可以去官方论坛参与讨论。开源 系统Web代码完全开源,在您使用过程中可以根据自已实际情况加以调整或修改,完全可以满足您的需求。强大且灵活 独创的多语言功能,可以直接在后台自由设定语言版本,其语言版本不限数量,可根据自已需要进行任意设置;系统各模块可在后台自由设置及开启;强大且适用的后台管理支

下载

SpringBoot整合MyBatis过程中可能遇到的问题有哪些

把service实现类写完了,也没问题

package com.bit.service;
import com.bit.mapper.UserMapper;
import com.bit.pojo.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class UserServiceImpl implements UserService{
    @Autowired
    private UserMapper userMapper;
    @Override
    public User queryById(Integer id) {
        System.out.println("进入了service");
        return userMapper.selectById(id);
    }
}

然后我直接去测试了,我测试的呢?

实例化了UserService,new了一个对象,然后直接调用方法,看是否能够调用UserMapper查询到数据库。然后就不断的包 空指针异常的错误

@SpringBootTest
class BitApplicationTests {
    @Test
    void contextLoads() {
        UserService userService = new UserServiceImpl();
        userService.queryById(13);
        System.out.println(userService);
        System.out.println(userService.queryById(15));
        System.out.println(userService.queryById(13));
    }
}

SpringBoot整合MyBatis过程中可能遇到的问题有哪些

  我一度以为是mapper接口没有注入到UserServcie中,导致调用UserServcie的方法 就是调用 UserMapper的方法是空的,以为是Mapper接口的问题,各种搜索怎么解决,经过几个小时之后,在他人的博客中找到了答案

  我们的UserMapper 注入到了 UserServiceImpl ,我们不能直接使用 UserServcieIml, 如果在其他的类中进行使用其功能,必须将这个类注入到 当前类中,从容器中拿到这个UserService,才能正确的进行调用,不会发生空指针异常,我一直没有发现,这是也该非常低级的错误。

正确做法: 先装配到当前对象中,再从容器中拿到bean进行使用

@SpringBootTest
class BitApplicationTests {
    @Autowired
    private UserService userService;
    @Test
    void contextLoads() {
        System.out.println(userService.queryById(15));
        System.out.println(userService.queryById(13));
    }
}

相关专题

更多
php远程文件教程合集
php远程文件教程合集

本专题整合了php远程文件相关教程,阅读专题下面的文章了解更多详细内容。

21

2026.01.22

PHP后端开发相关内容汇总
PHP后端开发相关内容汇总

本专题整合了PHP后端开发相关内容,阅读专题下面的文章了解更多详细内容。

14

2026.01.22

php会话教程合集
php会话教程合集

本专题整合了php会话教程相关合集,阅读专题下面的文章了解更多详细内容。

8

2026.01.22

宝塔PHP8.4相关教程汇总
宝塔PHP8.4相关教程汇总

本专题整合了宝塔PHP8.4相关教程,阅读专题下面的文章了解更多详细内容。

7

2026.01.22

PHP特殊符号教程合集
PHP特殊符号教程合集

本专题整合了PHP特殊符号相关处理方法,阅读专题下面的文章了解更多详细内容。

6

2026.01.22

PHP探针相关教程合集
PHP探针相关教程合集

本专题整合了PHP探针相关教程,阅读专题下面的文章了解更多详细内容。

6

2026.01.22

菜鸟裹裹入口以及教程汇总
菜鸟裹裹入口以及教程汇总

本专题整合了菜鸟裹裹入口地址及教程分享,阅读专题下面的文章了解更多详细内容。

20

2026.01.22

Golang 性能分析与pprof调优实战
Golang 性能分析与pprof调优实战

本专题系统讲解 Golang 应用的性能分析与调优方法,重点覆盖 pprof 的使用方式,包括 CPU、内存、阻塞与 goroutine 分析,火焰图解读,常见性能瓶颈定位思路,以及在真实项目中进行针对性优化的实践技巧。通过案例讲解,帮助开发者掌握 用数据驱动的方式持续提升 Go 程序性能与稳定性。

9

2026.01.22

html编辑相关教程合集
html编辑相关教程合集

本专题整合了html编辑相关教程合集,阅读专题下面的文章了解更多详细内容。

106

2026.01.21

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Redis6入门到精通超详细教程
Redis6入门到精通超详细教程

共47课时 | 5.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号