可儿那由多 2021-06-24 15:41 采纳率: 0%
浏览 467

ServiceImpl调用mapper层代码空指针怎么办?

  1. 这是错误信息 

    2.这是service代码

    package com.blog.service;
    
    import com.blog.mybatis.model.User;
    import org.springframework.stereotype.Service;
    
    @Service("UserService")
    public interface UserService {
        //登录方法
        public User userLogin(User user);
    
        //查询账号是否存在
        public int QueryAccount(String account);
    
        //查询用户
        public User selectUser();
    }
    

    3.这是serviceImpl代码

    @Service("UserService")
    public class UserServiceImpl implements UserService {
        @Autowired(required = false)
        private UserMapper mapper;
    
        @Override
        public User userLogin(User user) {
            return mapper.userLogin(user);
        }
    
        @Override
        public int QueryAccount(String account) {
            return mapper.QueryAccount(account);
        }
    
        @Override
        public User selectUser() {
            return mapper.selectUser();
        }

    4.这是mapper代码

    public interface UserMapper {
        //登录方法
        public User userLogin(User user);
    
        //查询账号是否存在
        public int QueryAccount(String account);
    
        //查询用户
        public User selectUser();
    }

    5.这是mapper.xml代码

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
    <mapper namespace="service.blog.mybatis.mapper.UserMapper">
        <select id="userLogin" resultType="User">
            select *
            from user
            where acct = #{acct}
              and pwd = #{pwd}
        </select>
        <select id="QueryAccount" resultType="User">
            select email from user where email = #{email}
        </select>
        <select id="selectUser" resultType="User">
            select * from user
        </select>
    </mapper>
    

    6.这是controlller代码

    @Controller
    @RequestMapping("/blog/api")
    public class MainController {
    
        @Autowired(required = false)
        private UserService service;
    
        private Logger logger = Logger.getLogger(MainController.class);
    
        @RequestMapping(value = "/check", method = RequestMethod.POST)
        @ResponseBody
        @CrossOrigin
        public Result check() {
            logger.info("MainController run");
            Result result = null;
            User user = service.selectUser();
            //String name = user.getAcct();
            result = new Result();
            result.setMessage("账号");
            return result;
        }

    配置文件

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:tx="http://www.springframework.org/schema/tx"
           xmlns:context="http://www.springframework.org/schema/context"
           xsi:schemaLocation="http://www.springframework.org/schema/tx
                               http://www.springframework.org/schema/tx/spring-tx.xsd
                               http://www.springframework.org/schema/beans
                               http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
                                http://www.springframework.org/schema/context
                                 http://www.springframework.org/schema/context/spring-context.xsd"
           default-lazy-init="true">
    
    
        <context:annotation-config/>
        <!--扫描全包-->
        <context:component-scan base-package="com.blog.*"/>
        <!--加载数据库文件-->
        <context:property-placeholder location="classpath:jdbc.properties"/>
    
        <!-- 写数据源 -->
        <!--配置dataSource对象,然后通过配置到transactionManager中-->
        <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
            <property name="driverClassName" value="${jdbc.Driver}"/>
            <property name="url" value="${jdbc.jdbcUrl}"/>
            <property name="username" value="${jdbc.user}"/>
            <property name="password" value="${jdbc.password}"/>
        </bean>
    
        <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
            <property name="dataSource" ref="dataSource"/>
        </bean>
    
        <tx:annotation-driven proxy-target-class="false" transaction-manager="transactionManager" />
    
        <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
            <property name="dataSource" ref="dataSource"/>
        </bean>
    
        <!--导入mapper-->
        <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
            <property name="basePackage" value="service.blog.mybatis.mapper"/>
            <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
        </bean>
    
        <!--配置mybatis配置文件-->
        <!--配置sqlmapper.xml配置文件-->
        <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
            <property name="dataSource" ref="dataSource"/>
            <property name="configLocation" value="classpath:/mybatis-config.xml"/>
            <property name="mapperLocations" value="classpath:com/blog/mybatis/mapper/*.xml"/>
        </bean>
    
        <bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
            <constructor-arg index="0" ref="sqlSessionFactory"/>
            <constructor-arg index="1" value="BATCH"/>
        </bean>
    
    </beans>
    • 写回答

    2条回答 默认 最新

    • CSDN专家-Fay 2021-06-24 15:44
      关注

      User user = service.selectUser(); 这里为null说明service没有自动装入

      评论

    报告相同问题?

    悬赏问题

    • ¥15 软件供应链安全是跟可靠性有关还是跟安全性有关?
    • ¥15 电脑蓝屏logfilessrtsrttrail问题
    • ¥20 关于wordpress建站遇到的问题!(语言-php)(相关搜索:云服务器)
    • ¥15 【求职】怎么找到一个周围人素质都很高不会欺负他人,并且未来月薪能够达到一万以上(技术岗)的工作?希望可以收到写有具体,可靠,已经实践过了的路径的回答?
    • ¥15 Java+vue部署版本反编译
    • ¥100 对反编译和ai熟悉的开发者。
    • ¥15 带序列特征的多输出预测模型
    • ¥15 Python 如何安装 distutils模块
    • ¥15 关于#网络#的问题:网络是从楼上引一根网线下来,接了2台傻瓜交换机,也更换了ip还是不行
    • ¥15 资源泄露软件闪退怎么解决?