使用mybatis-puls测试数据时,总是报“Unknown column ‘xxx’ in ‘field list’”。于是我网上搜。又说空格的原因,但我的试了空格的,无效。继续搜索。有个启发了我。于是测试成功了。做个记录。
最开始的pojo对象。
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value="CustomerRefundrecord对象", description="会员账户充值记录")
public class CustomerRefundrecord implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
@ApiModelProperty(value = "会员ID")
private Integer memberId;
@ApiModelProperty(value = "申请时间")
private Date createTime;
@ApiModelProperty(value = "申请退款金额")
private Double money;
@ApiModelProperty(value = "退款进度(0:提交申请 10:审核1通过 11:审核1拒绝 20:审核2通过 21:审核2拒绝 30:审核3通过 31:审核3拒绝)")
private Integer status;
@ApiModelProperty(value = "审核1审批意见")
private String adult1Remark;
@ApiModelProperty(value = "审核1审批时间")
private Date adult1Time;
@ApiModelProperty(value = "审核2审批意见")
private String adult2Remark;
@ApiModelProperty(value = "审核2审批时间")
private Date adult2Time;
@ApiModelProperty(value = "审核3审批意见")
private String adult3Remark;
@ApiModelProperty(value = "审核3审批时间")
private Date adult3Time;
@ApiModelProperty(value = "审核1员工ID")
private Integer adulter1Id;
@ApiModelProperty(value = "审核2员工ID")
private Integer adulter2Id;
@ApiModelProperty(value = "审核3员工ID")
private Integer adulter3Id;
@ApiModelProperty(value = "交易时间")
private Date tradeTime;
@ApiModelProperty(value = "交易结果 ((0, '未知'), (1, '交易成功'), (2, '交易失败'),(3, '撤销'), (4, '部分成功'), (5, '其他'))")
private Integer tradeResult;
private Double tradeMoney;
}
于是测试总报:
SQL: SELECT id,member_id,create_time,money,status,adult1_remark,adult1_time,adult2_remark,adult2_time,adult3_remark,adult3_time,adulter1_id,adulter2_id,adulter3_id,trade_time,trade_result,trade_money FROM customer_refundrecord WHERE id=?
Cause: java.sql.SQLSyntaxErrorException: Unknown column ‘adult1_remark’ in ‘field list’
网上搜了很多。其中有一篇启发我。于是我报着试试的情况。结果发现了问题。
由于mybatis-puls可以直接配置一个主键【@TableId(value = “id”, type = IdType.AUTO)】,其他属性会自动匹配,所以其他不适主键属性没有配置@TableField注解。
然后我配置上去后。发现。当数据库字段中当有_大于1个时,mybatis-puls会取后面那个保留。于是我就给我的带有两个_的字段添加了@TableField注解。测试。发现ok。
晒下修改后的pojo
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value="CustomerRefundrecord对象", description="会员账户充值记录")
public class CustomerRefundrecord implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
@ApiModelProperty(value = "会员ID")
private Integer memberId;
@ApiModelProperty(value = "申请时间")
private Date createTime;
@ApiModelProperty(value = "申请退款金额")
private Double money;
@ApiModelProperty(value = "退款进度(0:提交申请 10:审核1通过 11:审核1拒绝 20:审核2通过 21:审核2拒绝 30:审核3通过 31:审核3拒绝)")
private Integer status;
@ApiModelProperty(value = "审核1审批意见")
@TableField("adult_1_remark")
private String adult1Remark;
@ApiModelProperty(value = "审核1审批时间")
@TableField("adult_1_time")
private Date adult1Time;
@ApiModelProperty(value = "审核2审批意见")
@TableField("adult_2_remark")
private String adult2Remark;
@ApiModelProperty(value = "审核2审批时间")
@TableField("adult_2_time")
private Date adult2Time;
@ApiModelProperty(value = "审核3审批意见")
@TableField("adult_3_remark")
private String adult3Remark;
@ApiModelProperty(value = "审核3审批时间")
@TableField("adult_3_time")
private Date adult3Time;
@ApiModelProperty(value = "审核1员工ID")
@TableField("adulter_1_id")
private Integer adulter1Id;
@ApiModelProperty(value = "审核2员工ID")
@TableField("adulter_2_id")
private Integer adulter2Id;
@ApiModelProperty(value = "审核3员工ID")
@TableField("adulter_3_id")
private Integer adulter3Id;
@ApiModelProperty(value = "交易时间")
private Date tradeTime;
@ApiModelProperty(value = "交易结果 ((0, '未知'), (1, '交易成功'), (2, '交易失败'),(3, '撤销'), (4, '部分成功'), (5, '其他'))")
private Integer tradeResult;
private Double tradeMoney;
}