add not update

This commit is contained in:
Shaun Chyxion 2017-06-25 10:07:05 +08:00
parent 42338ec447
commit ae2f53c0e3
2 changed files with 21 additions and 3 deletions

View File

@ -5,6 +5,7 @@ import java.util.HashMap;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import me.chyxion.tigon.mybatis.Transient;
import me.chyxion.tigon.mybatis.NotUpdate;
import org.springframework.util.ReflectionUtils;
import me.chyxion.tigon.mybatis.NotUpdateWhenNull;
import org.springframework.util.ReflectionUtils.FieldFilter;
@ -53,7 +54,7 @@ public class MappableSupport implements Mappable {
@Override
public boolean matches(final Field field) {
field.setAccessible(true);
int modifiers = field.getModifiers();
final int modifiers = field.getModifiers();
final Object fieldValue =
ReflectionUtils.getField(field, MappableSupport.this);
return !Modifier.isTransient(modifiers) &&
@ -61,8 +62,9 @@ public class MappableSupport implements Mappable {
!Modifier.isFinal(modifiers) &&
!Modifier.isPublic(modifiers) &&
!Modifier.isStatic(modifiers) &&
(forUpdate ? fieldValue != null ||
!field.isAnnotationPresent(NotUpdateWhenNull.class) : true);
(forUpdate ? !field.isAnnotationPresent(NotUpdate.class)
&& (fieldValue != null
|| !field.isAnnotationPresent(NotUpdateWhenNull.class)) : true);
}
};
}

View File

@ -0,0 +1,16 @@
package me.chyxion.tigon.mybatis;
import java.lang.annotation.Target;
import java.lang.annotation.Retention;
import static java.lang.annotation.ElementType.FIELD;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
/**
* @author Shaun Chyxion <br>
* chyxion@163.com <br>
* Jun 25, 2017 09:57:32
*/
@Target(FIELD)
@Retention(RUNTIME)
public @interface NotUpdate {
}