java自定义类当中调用mapper接口,返回值为null问题

错误:

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;
    }
}

版权声明:本文为qq_41078608原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。