IWithCode 相关接口的使用调整。
parent
aa7f10008f
commit
e972899fbb
|
@ -3,6 +3,9 @@ package xyz.zhouxy.plusone.jdbc;
|
|||
import org.springframework.jdbc.core.namedparam.BeanPropertySqlParameterSource;
|
||||
import org.springframework.lang.Nullable;
|
||||
|
||||
import xyz.zhouxy.plusone.commons.exception.IWithCode;
|
||||
import xyz.zhouxy.plusone.commons.exception.IWithIntCode;
|
||||
|
||||
/**
|
||||
* 扩展了 {@link BeanPropertySqlParameterSource},在将 POJO 转换为
|
||||
* {@link org.springframework.jdbc.core.namedparam.SqlParameterSource} 时,
|
||||
|
@ -17,17 +20,23 @@ import org.springframework.lang.Nullable;
|
|||
*/
|
||||
public class BeanPropertyParamSource extends BeanPropertySqlParameterSource {
|
||||
|
||||
public BeanPropertyParamSource(Object object) {
|
||||
super(object);
|
||||
}
|
||||
public BeanPropertyParamSource(Object object) {
|
||||
super(object);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Nullable
|
||||
public Object getValue(String paramName) throws IllegalArgumentException {
|
||||
Object value = super.getValue(paramName);
|
||||
if (value instanceof Enum) {
|
||||
return ((Enum<?>) value).ordinal();
|
||||
}
|
||||
return value;
|
||||
}
|
||||
@Override
|
||||
@Nullable
|
||||
public Object getValue(String paramName) throws IllegalArgumentException {
|
||||
Object value = super.getValue(paramName);
|
||||
if (value instanceof Enum<?> e) {
|
||||
if (value instanceof IWithCode<?> c) {
|
||||
return c.getCode();
|
||||
}
|
||||
if (value instanceof IWithIntCode c) {
|
||||
return c.getCode();
|
||||
}
|
||||
return e.ordinal();
|
||||
}
|
||||
return value;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -9,6 +9,7 @@ import com.fasterxml.jackson.annotation.JsonValue;
|
|||
|
||||
import lombok.Getter;
|
||||
import lombok.ToString;
|
||||
import xyz.zhouxy.plusone.commons.exception.IWithIntCode;
|
||||
import xyz.zhouxy.plusone.constant.EntityStatus;
|
||||
import xyz.zhouxy.plusone.domain.AggregateRoot;
|
||||
import xyz.zhouxy.plusone.domain.IWithOrderNumber;
|
||||
|
@ -129,12 +130,28 @@ public class Menu extends AggregateRoot<Long> implements IWithOrderNumber, IWith
|
|||
this.version = version;
|
||||
}
|
||||
|
||||
public enum MenuType {
|
||||
MENU_LIST, MENU_ITEM;
|
||||
public enum MenuType implements IWithIntCode {
|
||||
MENU_LIST(0), MENU_ITEM(1);
|
||||
|
||||
private final int code;
|
||||
|
||||
private MenuType(int code) {
|
||||
this.code = code;
|
||||
}
|
||||
|
||||
@JsonValue
|
||||
public int value() {
|
||||
return ordinal();
|
||||
@Override
|
||||
public int getCode() {
|
||||
return code;
|
||||
}
|
||||
|
||||
public static MenuType valueOf(int code) {
|
||||
for (MenuType value : values()) {
|
||||
if (value.code == code) {
|
||||
return value;
|
||||
}
|
||||
}
|
||||
throw new EnumConstantNotPresentException(MenuType.class, Integer.toString(code));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue