栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

复选枚举数据库一个字段保存的设计方案

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

复选枚举数据库一个字段保存的设计方案

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 convertToBitList(Integer num){
        List 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)
输出的就是复选的枚举编码的列表

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/759246.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号