• 见过最多次的错误:java.lang.NullPointerException


    代码:

        @Autowired
        private UserMapper userMapper;
        @Autowired  // 忘记添加
        private RoleMapper roleMapper;
        
        @Override
        public Map<String, Object> selectUserByCondition(Map<String, Object> condition) {
            Map<String, Object> returnUser = userMapper.selectUserByCondition(condition);
            if (condition.get("user_pwd")==null) {
                return returnUser;
            }
            // 先用MD5对密码进行加密,再做比较
            String md5 = Md5Utils.md5((String)condition.get("user_pwd"));
            if(returnUser!=null && md5.equals(returnUser.get("user_pwd"))) {
                return returnUser;
            }
            return null;
        }
    
        @Override
        public int changePasswordById(Map<String, Object> user) {
            int i = userMapper.changePasswordById(user);
            if (i > 0) {
                return i;
            }
            return 0;
        }
        
        public PageUtils selectByConditionToPage(Map<String, Object>condition, int index) {
            // 1.通过条件查询记录数
            int count = userMapper.selectCountByCondition(condition);
            // 每页的记录数
            int size = Global.PAGE_SIZE;
            LOGGER.debug(count);
            PageUtils pageUtils = null;
            if (count > 0) {
                pageUtils = new PageUtils(index, size, count);
                // 2.通过条件查询数据
                // 注意:开始位置 = 索引*每页记录数
                index = index*size;
                List<Map<String,Object>> page = userMapper.selectByConditionToPage(condition, index, size);
                // 将角色的数据也加入到集合里面
                for (Map<String, Object> user : page) {
                    // 第一步:通过 user 中的 role_id
                    Object role_id = user.get("role_id");
                    Map<String, Object> role = new HashMap<String, Object>();
                    role.put("role_id", role_id);
                    // 第二步:通过 role_id 获得角色信息
                    role = roleMapper.selectRoleByCondition(role); // 报错点
                    // 第三步:将角色的字段拼接到 user 里面
                    // 使用拼接在同一层的方式,不同表的字段名是不可以重复的
                    user.put("role", role);
                    LOGGER.debug("管理员拼接后的字段:"+role);
                }
                pageUtils.setPage(page);
            }
            return pageUtils;
        }

    错误详情:

    java.lang.NullPointerException
        at cn.mgy.service.impl.UserServiceImpl.selectByConditionToPage(UserServiceImpl.java:72)
        at cn.mgy.controller.UserController.toUserList(UserController.java:129)
        at cn.mgy.controller.UserController$$FastClassBySpringCGLIB$$25cf3127.invoke(<generated>)
        at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
        at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:736)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
        at org.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:133)
        at org.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:121)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
        at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:671)
        at cn.mgy.controller.UserController$$EnhancerBySpringCGLIB$$5f531980.toUserList(<generated>)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
        at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)
        at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)
        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)
        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)
        at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
        at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)
        at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)
        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
        at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:635)
        at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:493)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
        at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:650)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
        at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:800)
        at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
        at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:806)
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1498)
        at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
        at java.lang.Thread.run(Thread.java:748)

    怎么样去解决错误:第一:先看控制台,报错的原因,看到空指针异常,有点蒙,不知去哪找错了,并且报错的地方好像有点没对象。

             第二:加了日志,可日志好像并没有打印出来,联想到可能调用的方法没有去执行。那为什么会不执行呢?

             第三:应该马上联想到该对象没有注入,然后去瞄一眼,哎,真的是,真没有注入,马上注入,立即执行,啊,成功了

  • 相关阅读:
    常见26个jquery使用技巧详解(比如禁止右键点击、隐藏文本框文字等)
    禁用页面及页面所有frame内的右键菜单
    JS模态窗口返回值兼容问题解决方案
    winform登录时,在密码框按下回车,直接登陆
    C#中实现邮件发送功能
    CTFHub-彩蛋(持续更新~)
    CTFHub技能树-目录遍历
    免密钥方式登陆配置
    Ansible_Day1
    Python_Day2_共享你的代码
  • 原文地址:https://www.cnblogs.com/maigy/p/10821766.html
Copyright © 2020-2023  润新知