Mybatis-plus从2.x 升级到 3.x 后的变化还是比较大的,其中就删除了UpdateAllColumnById方法。项目里用到的地方比较多,昨天抽时间看下源码,写了和扩展重新实现了这个功能。 在这记录下,也得需要的小伙伴提供个参考。。。
1 实现MP自定义普通UpdateAllColumnById方法
/**
* <p>
* 根据 ID 更新有值字段
* </p>
*
* @author yangyining
*/
@Slf4j
public class UpdateAllColumnById extends AbstractMethod {
@Override
public MappedStatement injectMappedStatement(final Class<?> mapperClass, final Class<?> modelClass, final TableInfo tableInfo) {
final SqlMethod sqlMethod = SqlMethod.LOGIC_UPDATE_ALL_COLUMN_BY_ID;
// 反射修改fieldFill值为update
final List<TableFieldInfo> fieldList = tableInfo.getFieldList();
for (final TableFieldInfo tableFieldInfo : fieldList) {
final Class<? extends TableFieldInfo> aClass = tableFieldInfo.getClass();
try {
final Field fieldFill = aClass.getDeclaredField("fieldFill");
fieldFill.setAccessible(true);
fieldFill.set(tableFieldInfo, FieldFill.UPDATE);
} catch (final NoSuchFieldException e) {
log.error("获取fieldFill失败", e);
} catch (final IllegalAccessException e)