一直报错显示:Servlet[springmvc]的Servlet.service()引发了具有根本原因的异常Request processing failed; nested exception is java.lang.NullPointerException
报错如下:
java.lang.NullPointerException
at com.util.CommDAO.select(CommDAO.java:520)
at com.util.Info.getInventory(Info.java:678)
at com.controller.OrdermsgController.faHuo(OrdermsgController.java:314)
这是错误界面:
OrdermsgController.faHuo的代码如下:
//发货
@RequestMapping("admin/faHuo")
public String faHuo(Ordermsg ordermsg,HttpServletRequest request){
Ordermsg order = ordermsgDAO.findById(ordermsg.getId());
List<Ordermsgdetails> list = ordermsgdetailsDAO.selectorderDetails(order.getOrderno());
boolean flag = true;
for(Ordermsgdetails ordermsgdetails:list){
int inventoryrecord = Info.getInventory(ordermsgdetails.getProductid());//库存数量
if(inventoryrecord<ordermsgdetails.getNum()){
flag = false;
break;
}
}
if(flag==true){
for(Ordermsgdetails omd:list){
Inventory inv = new Inventory();
inv.setNum(omd.getNum());
inv.setType("out");
inv.setProductid(String.valueOf( omd.getProductid()));
inventoryDAO.add(inv);
}
ordermsg.setShstatus("待收货");
ordermsgDAO.update(ordermsg);
return "redirect:orderList.do";
}else{
return "redirect:orderList.do?msg=msg";
}
}
Info.getInventory对应代码如下:
//库存
@Autowired
public static int getInventory(int id) {
int num=0;
int intotal = 0;
int outtotal = 0;
CommDAO dao = new CommDAO();
List<HashMap> inlist = dao.select("select * from inventory where type='in' and productid='"+id+"'");
List<HashMap> outlist = dao.select("select * from inventory where type='out' and productid='"+id+"'");
for(HashMap inmap:inlist){
intotal+=Integer.parseInt(inmap.get("num").toString());
}
for(HashMap outmap:outlist){
outtotal+=Integer.parseInt(outmap.get("num").toString());
}
if(intotal>=outtotal){
num = intotal-outtotal;
}
return num;
}
CommDAO.select对应代码如下:
public List<HashMap> select(String sql)
{
System.out.println(sql);
List<HashMap> list = new ArrayList();
try {
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery(sql);
ResultSetMetaData rsmd = rs.getMetaData();
while(rs.next())
{
HashMap map = new HashMap();
int i = rsmd.getColumnCount();
for(int j=1;j<=i;j++)
{
if(!rsmd.getColumnName(j).equals("ID"))
{
String str = rs.getString(j)==null?"": rs.getString(j);
if(str.equals("null"))str = "";
map.put(rsmd.getColumnName(j), str);
}
else
map.put("id", rs.getString(j));
}
list.add(map);
}
rs.close();
st.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
if(sql.equals("show tables"))
list = select("select table_name from INFORMATION_SCHEMA.tables");
else
e.printStackTrace();
}
return list;
}
在百度找了好多方法试了都不管用,急需各位解惑