java使用Springboot在工具类中操作数据库

工具类中常常会编写一个static方法直接供外部调用,使用@Autowired注解就会为null,这是因为工具类的启动顺序问题,在生成此类时执行顺序会直接执行方法,此时工具类中的service或者是Mapper都是空指针状态,如果需要使用的话需要在调用方法后续进行一次注入,就可以使用Mapper或者是Service了。如下代码所示。

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.x.x.dao.SysUserMapper;
import com.x.x.entity.SysUser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import java.util.List;

@Component
public class UserLoginCheckTool {
    @Autowired
    private SysUserMapper sysUserMapper;
    private static UserLoginCheckTool userLoginCheckTool;

    @PostConstruct
    public void init() {
        userLoginCheckTool = this;
        userLoginCheckTool.sysUserMapper = this.sysUserMapper;
    }

    public static SysUser findAdmin(String token) {
        QueryWrapper<SysUser> queryWrapper = new QueryWrapper<SysUser>();
        queryWrapper.eq("token", token);
        return userLoginCheckTool.sysUserMapper.selectOne(queryWrapper);
    }
}

链接