1.问题描述
//dao层实现类只定义封装进去了三个类
if(result.next()){
String enamese = result.getString("ename");
int egendarse= result.getInt("egendar");
int depidse = result.getInt("depid");
searchlist.add(new employee(enamese, egendarse, depidse));
}
//entity层String,int,int的构造方法也只有这一个
public employee(String ename, int egendar, int depid) {
this.ename = ename;
this.egendar = egendar;
this.depid = depid;
}
//serviceImpl
@Override
public List<employee> search(int empid) {return this.empdao.search(empid);}
//controller
int empid = Integer.parseInt(req.getParameter("empid"));
List searchlist = this.empservice.search(empid);
String jsonstr = JSON.toJSONString(searchlist.get(0));
System.out.println("controller-search接收到的返回值:"+jsonstr);//因为没有接收empid,故内部的empid默认为0
resp.getWriter().write(jsonstr);
break;
最后传到表现层时输出的对象内数据却多了一个empid
2.原因
entity层编写属性时用的是基本数据类型int,此时构造对象时,就算响应的构造方法没有它的位置,它也会自动赋上默认值并封装进对象内
3.解决方法
在entity实体层编写属性时改用包装数据类型(Integer、Boolean等),这样就不会在构造对象时出现多的属性