Dao工程获取bookDao空指针异常

来源:5-2 项目作业

wacky1

2020-07-28 08:10:47

http://img.mukewang.com/climg/5f1f6c880970c8cc08620344.jpg

bookController

package com.imooc.bookshop.controller;


import com.imooc.bookshop.biz.BookBiz;
import com.imooc.bookshop.biz.impl.BookBizImpl;
import com.imooc.bookshop.entity.Book;
import com.sun.org.apache.xpath.internal.XPathContext;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.List;

public class BookController {
    private BookBiz bookBiz = new BookBizImpl();
    //Book/add.do

    /**
     * 添加书本方法
     */
    public void add(HttpServletRequest request, HttpServletResponse response) throws FileUploadException, IOException {
        Book book = new Book();
        FileItemFactory factory = new DiskFileItemFactory();
        ServletFileUpload upload = new ServletFileUpload(factory);
        List<FileItem> list = upload.parseRequest(request);
        for (FileItem item : list) {
            if (item.isFormField()) {
                if (item.getFieldName().equals("name")) {
                    book.setName(item.getString("utf-8"));
                }
                if (item.getFieldName().equals("categoryId")) {
                    book.setcategoryId(Integer.parseInt(item.getString("utf-8")));
                }
                if (item.getFieldName().equals("level")) {
                    book.setLevel(Integer.parseInt(item.getString("utf-8")));
                }
                if (item.getFieldName().equals("price")) {
                    book.setPrice(Integer.parseInt(item.getString("utf-8")));
                }
            } else {
                if (item.getFieldName().equals("smallImg")) {
                    if (item.getSize() <= 100) {
                        continue;
                    }
                    String rootPath = request.getServletContext().getRealPath("/");
                    String path = item.getName();
                    String type = ".jpg";
                    if (path.indexOf(".") != -1) {
                        type = path.substring(path.lastIndexOf("."));
                    }
                    path = "/download/images" + System.currentTimeMillis() + type;
                    try {
                        item.write(new File(rootPath + path));
                        book.setImgPath(path);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            }
        }
        bookBiz.add((List<Book>) book);
        response.sendRedirect(request.getContextPath()+"index.jsp");
    }
}

http://img.mukewang.com/climg/5f1f6cd3096f439008010240.jpg

BookBizImpl

package com.imooc.bookshop.biz.impl;




import com.imooc.bookshop.dao.BookDao;
import com.imooc.bookshop.entity.Book;
import com.imooc.bookshop.global.DaoFactory;


import java.util.List;

public class BookBizImpl implements com.imooc.bookshop.biz.BookBiz {
    private BookDao bookDao = DaoFactory.getInstence().getDao(BookDao.class);


    public void add(List<Book> list) {
        bookDao.insertBook(list);
    }

    public List<Book> selectAll() {
        return bookDao.selectAll();
    }

    public List<Book> selectByCategoryId(int categoryId) {
        return bookDao.selectByCatregoryId(categoryId);
    }
}

DaoFactory

package com.imooc.bookshop.global;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;

public class DaoFactory {
    private static DaoFactory daoFactory;
    private SqlSessionFactory sessionFactory;
    private DaoFactory(){
        /* 加载配置文件,获取sessionFactory*/
        SqlSessionFactoryBuilder sessionFactoryBuilder = new SqlSessionFactoryBuilder();
        try {
            sessionFactory = sessionFactoryBuilder.build(Resources.getResourceAsReader("/mybatis.xml"));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    /* 使用单例模式创建该类的实例对象*/
    public static DaoFactory getInstence(){
        if(daoFactory==null)
            daoFactory = new DaoFactory();
        return daoFactory;
    }
    /*创建一个传入泛型类Dao的实例对象*/
    public <T> T getDao(Class<T> tClass){
        return sessionFactory.openSession(true).getMapper(tClass);
    }

}

http://img.mukewang.com/climg/5f1f6cf9095cada709830293.jpg

写回答

1回答

好帮手慕阿满

2020-07-28

同学你好,报错提示getDao()方法报空指针异常,从同学的代码中看不应该出现这个问题,建议同学删除target文件,重启项目再试试。

祝:学习愉快~

0

0 学习 · 8016 问题

查看课程