错误:
2022-03-18 14:13:17.707 -- ERROR -- [http-nio-9999-exec-2] -- o.a.c.c.C.[.[localhost].[/].[dispatcherServlet]:175 --- Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.NullPointerException] with root cause
java.lang.NullPointerException: null
当我们使用工具类调用mapper,然后操作数据库时,会出现这种问题。
错误原因:
我们的mapper接口是通过@@Repository注解的,放在spring容器当中,而我们新建的工具类 是new出来的,与mapper接口不在一个容器当中,所以调用的时候会出c错。
解决方法: 在工具类中修改
@Component// 注释加上
public class CodeRuleUntil {
@Autowired
private CodeRuleMapper codeRuleMapper;
public static CodeRuleUntil codeRuleUntil;//定义一个静态时实例
@PostConstruct//使用这个java注解,让静态实例联系到mapper接口,下边这个方法完全写上,修改为自己的东西
public void init() {
codeRuleUntil = this;
codeRuleUntil.codeRuleMapper = this.codeRuleMapper;
}
public String createCode() {
String table = CreateCodeEnum.WorkCenter.getTableName();
Long id = codeRuleUntil.codeRuleMapper.getId(table);//调用mapper接口时,别忘记加上静态实例
NumberFormat formatter = NumberFormat.getNumberInstance();
formatter.setMinimumIntegerDigits(CreateCodeEnum.WorkCenter.getNum());
formatter.setGroupingUsed(false);
String s = formatter.format(id + 1);
return CreateCodeEnum.WorkCenter.getFixedCode() + s;
}
}