问题描述
查询一条数据后,对该数据的某些字段进行更改后,使用mybatis-plus更新方法,会对全部字段进行更新
public Result checkState(String payBatch) {
LyBankLog lyBankLog = lybanklogMapper.selectBankLog(payBatch);
String[] split = lyBankLog.getOutfiles().split("/");
log.info("发盘文件名:" + split[split.length-1]);
//将发盘文件名改为回盘文件名
String fileName = split[split.length-1].replaceFirst("TIG", "RIG");
log.info("回盘文件名:" + fileName);
//FTP回盘文件路径
String path = iDictMapper.getLabelByTypeValue("FTP_CONFIG", "DOWNLOADPATH");
log.info("FTP回盘文件路径:"+path);
//
Result result = new Result();
initFTPConfig();
FTPDealUtils ftp = new FTPDealUtils(Host, UserName, PassWord, 21);
//登录
ftp.connectServer();
//
if (ftp.checkFTPFile(path,fileName)) {
log.info("回盘文件已生成!");
lyBankLog.setInfiles(path+fileName);
lyBankLog.setReturndate(new Date());
result.setSuccess(true);
result.setMsg("回盘文件已生成!");
} else {
log.info("回盘文件未生成!");
//可能存在第一次查询回盘文件已生成,但第二次查询回盘文件不存在的情况
lyBankLog.setInfiles(null);
lyBankLog.setReturndate(null);
result.setSuccess(false);
result.setMsg("回盘文件未生成!");
}
//登出
ftp.disConnect();
lybanklogMapper.updateById(lyBankLog);
return result;
}
原因分析:
mybatis-plus 会默认根据实体类所有有值的字段进行更新操作
解决方案:
1、创建一个新的实体类,并将需要修改的字段进行赋值更新
2、写sql语句进行更新
3、使用mybatis-plus中的updatewrapper