使用Mybatis实现数据库查询时候报错,内容如下
### Cause: org.apache.ibatis.reflection.ReflectionException: Error instantiating class corp.credit.dialOutTask.bean.DialOutTaskDetail with invalid types () or values (). Cause: java.lang.NoSuchMethodException: corp.credit.dialOutTask.bean.DialOutTaskDetail.<init>()
at corp.credit.base.fac.DaoFac.executeMapper(DaoFac.java:257)
很多时候报错
Cause: org.apache.ibatis.reflection.ReflectionException: Error instantiating class
是由于数据库数据和 Bean 之中的数据不匹配,或者数据类型不匹配或者属性名出现偏差。但这里要说的不是以上问题,实践中还有一种情况也出现了上述报错,即,Bean 文件中自己定义了一个构造函数,使用 Mybatis 进行数据查询时,出现了问题。
为解决上述问题,方法如下:
public class DialOutTaskDetail {
String dialOutTaskId; // 外呼任务 Id
String custName; // 用户名
String custId; // 用户Id
String agentName; // 坐席姓名
String agentId; // 坐席Id
String taskDesp; // 任务描述
String lastDialDate; // 最近拨打时间
String dialState; // 外呼状态
String isConnect;// 是否接通
String callBackState; // 回访状态
String dialTime; // 拨打次数
String custEcif; // 用户ECIFID
String custMobile; // 用户MobileNum
String dialRes; // 拨打结果
public DialOutTaskDetail(String dialOutTaskId, String custName, String custId, String agentName, String agentId,
String taskDesp, String lastDialDate,String dialState, String isConnect,String callBackState, String dialTime,
String custEcif, String custMobile,String dialRes) {
this.dialOutTaskId = dialOutTaskId;
this.custName = custName;
this.custId = custId;
this.agentId = agentId;
this.agentName = agentName;
this.taskDesp = taskDesp;
this.lastDialDate = lastDialDate;
this.dialState = dialState;
this.isConnect = isConnect;
this.callBackState = callBackState;
this.dialTime = dialTime;
this.custEcif = custEcif;
this.custMobile = custMobile;
this.dialRes = dialRes;
}
public DialOutTaskDetail() {
}
public String getDialOutTaskId() {
return dialOutTaskId;
}
public void setDialOutTaskId(String dialOutTaskId) {
this.dialOutTaskId = dialOutTaskId;
}
public String getCustName() {
return custName;
}
public void setCustName(String custName) {
this.custName = custName;
}
public String getCustId() {
return custId;
}
public void setCustId(String custId) {
this.custId = custId;
}
public String getAgentName() {
return agentName;
}
public void setAgentName(String agentName) {
this.agentName = agentName;
}
public String getAgentId() {
return agentId;
}
public void setAgentId(String agentId) {
this.agentId = agentId;
}
public String getTaskDesp() {
return taskDesp;
}
public void setTaskDesp(String taskDesp) {
this.taskDesp = taskDesp;
}
public String getLastDialDate() {
return lastDialDate;
}
public void setLastDialDate(String lastDialDate) {
this.lastDialDate = lastDialDate;
}
public String getDialState() {
return dialState;
}
public void setDialState(String dialState) {
this.dialState = dialState;
}
public String getIsConnect() {
return isConnect;
}
public void setIsConnect(String isConnect) {
this.isConnect = isConnect;
}
public String getCallBackState() {
return callBackState;
}
public void setCallBackState(String callBackState) {
this.callBackState = callBackState;
}
public String getDialTime() {
return dialTime;
}
public void setDialTime(String dialTime) {
this.dialTime = dialTime;
}
public String getCustEcif() {
return custEcif;
}
public void setCustEcif(String custEcif) {
this.custEcif = custEcif;
}
public String getCustMobile() {
return custMobile;
}
public void setCustMobile(String custMobile) {
this.custMobile = custMobile;
}
}
再回顾一下之前的报错的Bean:
public class DialOutTaskDetail {
String dialOutTaskId; // 外呼任务 Id
String custName; // 用户名
String custId; // 用户Id
String agentName; // 坐席姓名
String agentId; // 坐席Id
String taskDesp; // 任务描述
String lastDialDate; // 最近拨打时间
String dialState; // 外呼状态
String isConnect;// 是否接通
String callBackState; // 回访状态
String dialTime; // 拨打次数
String custEcif; // 用户ECIFID
String custMobile; // 用户MobileNum
String dialRes; // 拨打结果
public DialOutTaskDetail(String dialOutTaskId, String custName, String custId, String agentName, String agentId,
String taskDesp, String lastDialDate,String dialState, String isConnect,String callBackState, String dialTime,
String custEcif, String custMobile,String dialRes) {
this.dialOutTaskId = dialOutTaskId;
this.custName = custName;
this.custId = custId;
this.agentId = agentId;
this.agentName = agentName;
this.taskDesp = taskDesp;
this.lastDialDate = lastDialDate;
this.dialState = dialState;
this.isConnect = isConnect;
this.callBackState = callBackState;
this.dialTime = dialTime;
this.custEcif = custEcif;
this.custMobile = custMobile;
this.dialRes = dialRes;
}
public String getDialOutTaskId() {
return dialOutTaskId;
}
public void setDialOutTaskId(String dialOutTaskId) {
this.dialOutTaskId = dialOutTaskId;
}
public String getCustName() {
return custName;
}
public void setCustName(String custName) {
this.custName = custName;
}
public String getCustId() {
return custId;
}
public void setCustId(String custId) {
this.custId = custId;
}
public String getAgentName() {
return agentName;
}
public void setAgentName(String agentName) {
this.agentName = agentName;
}
public String getAgentId() {
return agentId;
}
public void setAgentId(String agentId) {
this.agentId = agentId;
}
public String getTaskDesp() {
return taskDesp;
}
public void setTaskDesp(String taskDesp) {
this.taskDesp = taskDesp;
}
public String getLastDialDate() {
return lastDialDate;
}
public void setLastDialDate(String lastDialDate) {
this.lastDialDate = lastDialDate;
}
public String getDialState() {
return dialState;
}
public void setDialState(String dialState) {
this.dialState = dialState;
}
public String getIsConnect() {
return isConnect;
}
public void setIsConnect(String isConnect) {
this.isConnect = isConnect;
}
public String getCallBackState() {
return callBackState;
}
public void setCallBackState(String callBackState) {
this.callBackState = callBackState;
}
public String getDialTime() {
return dialTime;
}
public void setDialTime(String dialTime) {
this.dialTime = dialTime;
}
public String getCustEcif() {
return custEcif;
}
public void setCustEcif(String custEcif) {
this.custEcif = custEcif;
}
public String getCustMobile() {
return custMobile;
}
public void setCustMobile(String custMobile) {
this.custMobile = custMobile;
}
}
少就少在缺了一个默认的构造函数,添加一个默认的构造函数即可解决上述问题。