关于idea测试类中注入@Autowired ,但是mapper为空以及不能进行中文模糊查询的问题

2022-06-27 12:16:46

关于idea测试类中注入@Autowired ,但是mapper为空以及不能进行中文模糊查询的问题

首先感谢这位博主的文章

我在测试类中写了一个模糊查询的功能,运行之后一直显示空指针异常。debug了一下发现providerMapper为null,也就是@Autowired 注入不成功。

@SpringBootTestpublicclassSpringBoot10ApplicationTests{@Autowired
    ProviderMapper providerMapper;@TestpublicvoidcontextLoads(){
        Provider p=newProvider();
        p.setProviderName("A货");
        List<Provider> providers= providerMapper.getProviders(p);
        System.out.println(providers.get(0));}}

第一步想到的就是在接口mapper层里没有加上注解,但是加了也无济于事
在这里插入图片描述
之后检查了配置文件.xml也没有发现任何问题,百度了一下大多文章都没有讲到测试类的@Autowired注入不成功问题,都是dao层之类的。然后我就看到了开头那位博主的文章,添加了两个注解便运行成功了

@SpringBootTest(classes= SpringBoot10Application.class)@RunWith(SpringRunner.class)publicclassSpringBoot10ApplicationTests{@Autowired
    ProviderMapper providerMapper;@TestpublicvoidcontextLoads(){
        Provider p=newProvider();
        p.setProviderName("A货");
        List<Provider> providers= providerMapper.getProviders(p);
        System.out.println(providers.get(0));}

之前在非测试类里注入完全没有问题,也不知道是什么原因在测试类里就不行。如果有哪位大佬知道请给我解答一下,感谢!

解决了空指针异常后又遇到了一个问题,使用模糊查询竟然查不了中文,字符数字都可以查询
在网上查询了一下发现是配置文件中的application.yml文件里链接数据库时没有指定编码格式,修改之后就可以了

 url: jdbc:mysql://127.0.0.1:3306/bill?serverTimezone=UTC&characterEncoding=UTF-8
  • 作者:码农十七号选手
  • 原文链接:https://blog.csdn.net/weixin_43559267/article/details/109819865
    更新时间:2022-06-27 12:16:46