Dao工程获取bookDao空指针异常
来源:5-2 项目作业
wacky1
2020-07-28 08:10:47

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");
}
}
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);
}
}
1回答
同学你好,报错提示getDao()方法报空指针异常,从同学的代码中看不应该出现这个问题,建议同学删除target文件,重启项目再试试。
祝:学习愉快~
相似问题
回答 2
回答 1