关于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