1. 使用技术点
位运算
2. 保存
- 一. 前端传入枚举列表
{"methods":[1,2]}
- 二. 与后端的枚举进行校验
public enum MethodEnum {
METHOD1(1, "东"), //0001
METHOD2(2,"南"), //0010
METHOD3(4,"西"), //0100
METHOD4(8,"北"); //1000
private Integer code;
private String name;
MethodEnum(Integer code, String name) {
this.code = code;
this.name = name;
}
public Integer getCode() {
return code;
}
public String getName() {
return name;
}
public static MethodEnum getByCode(Integer code) {
if (code == null) {
return null;
}
for (MethodEnum p : values()) {
if (code.equals(p.getCode())) {
return p;
}
}
return null;
}
public static List<Integer> convertToBitList(Integer num){
List<Integer> enumList = new ArrayList<>();
for (MethodEnum p : values()) {
int enumCode = p.getCode();
if ((num&enumCode)==(enumCode)) {
enumList.add(enumCode);
}
}
return enumList;
}
}
- 枚举示例代码如下
- 按照位运算定义枚举十进制,分别对应其二进制
- 根据 getByCode()方法校验前端输入的数字是否为枚举列表中的枚举
- 三. 数据转换
Integer sum = list.stream().reduce(Integer::sum).orElse(0);
-将sum数值存入数据库字段中
(1, “东”), //0001
(2,“南”), //0010
(4,“西”), //0100
(8,“北”), //1000
(3, “东"和"南”), //0011
.
.
以此类推
3. 查询回显
- 使用枚举中的convertToBitList()方法进行转换,用到的就是位运算(num&enumCode)
输出的就是复选的枚举编码的列表