当前使用版本(必填,否则不予处理)
3.3.2
该问题是如何引起的?(确定最新版也有问题再提!!!)
重现步骤(如果有就写完整)
使用IService中的update(Wrapper
this.update(Wrappers.<User>lambdaUpdate().eq(User::getId, id).set(User::getAge, age));
自动填充功能会失效。
private static void process(MappedStatement ms, Object parameterObject) {
if (parameterObject != null) {
TableInfo tableInfo = null;
Object entity = parameterObject;
if (parameterObject instanceof Map) {
Map<?, ?> map = (Map<?, ?>) parameterObject;
if (map.containsKey(Constants.ENTITY)) {
Object et = map.get(Constants.ENTITY);
if (et != null) {
entity = et;
tableInfo = TableInfoHelper.getTableInfo(entity.getClass());
}
}
} else {
tableInfo = TableInfoHelper.getTableInfo(parameterObject.getClass());
}
// 跟踪断点,发现tableInfo ==null,没有执行以下代码
if (tableInfo != null) {
//到这里就应该转换到实体参数对象了,因为填充和ID处理都是争对实体对象处理的,不用传递原参数对象下去.
MetaObject metaObject = ms.getConfiguration().newMetaObject(entity);
if (SqlCommandType.INSERT == ms.getSqlCommandType()) {
populateKeys(tableInfo, metaObject, entity);
insertFill(metaObject, tableInfo);
} else {
updateFill(metaObject, tableInfo);
}
}
}
}
跟踪断点,发现tableInfo ==null,没有执行填充代码。
parameterObject 参数中et为null,应该操作ew进行赋值。
报错信息
无报错信息,自动填充不生效。
Comment From: miemieYaho
只能填充到第一个入参
Comment From: hieastz
只能填充到第一个入参
@miemieYaho 你的意思使用 update(T entity, Wrapper
那提供 IService.update(Wrapper