个状态增加一个客人很满意的状态,这时我们需要这么做:
order.State |= OrderState.客户满意; //这个时候订单的状态将会具有三种状态,既“已审核”、“已发货”,“客户满意”。
如果客户收到了货物觉得非常不满意,要求退货,快递公司又将货物拿了回来,于是就需要将“已发货”的状态从这张订单的状态中去掉,这么操作:
order.State ^= OrderState.已发货; //这个时候订单的状态将只剩下已审核的状态了。
可以看出通过对枚举的与或非的操作就可以同时承载从种状态,这是为什么呢,其实所谓的枚举也都是数字而已,对它的与或非的操作也相当于对数字的与或非操作。
好了,当我们需要统计某个列表中有多少张“已发货”的订单时,我们就可以这样子写:
select count(*) from t_order where state=state|8
这时得出的就是所有状态为“已发货”的订单的总计了。
至此简单的介绍了一下如何使用数字的与或非运算来达到将不确定的客户需求中关于状态的那部分从数据库中分离出来,那是不是每次增加一种状态都要修改程序和页面呢,其实也不用,我们可以将枚举隔离到配置文件或数据库中,通过反射生成枚举类型,这样子当我们再遇到客户说需要增加状态的时候,我们只需要修改一下配置或增加一条数据库记录一切都解决了。
自从使用了这个方法后,生活变的轻松起来了

转载于:https://www.cnblogs.com/biyusoft/archive/2011/07/17/3432057.html

数字的与或非处理表中的多个状态(二)相关推荐

  1. 什么是原子DDL?8.0将字典信息存放到事务表中

    前言 MySQL 5.7 的字典信息保存在非事务表中,并且存放在不同的文件中(.FRM,.PAR,.OPT,.TRN,.TRG 等).所有 DDL 操作都不是 Crash Safe,而且对于组合 DD ...

  2. (65)如何根据句柄从二级、三级结构句柄表中找到内核对象

    一.回顾 上一篇博客介绍了如何遍历一级句柄表.一级句柄表非常简单,就是一个4KB页,最多存储512个句柄表项.如果句柄数量在 512 - 1024*512 之间,句柄表就是二级结构:如果句柄数量大于 ...

  3. oracle数据库中批量把一张表里面的数据插入到不同的表中的方法

    oracle数据库中批量把一张表里面的数据插入到不同的表中的方法(insert first into | insert all into) 准备环境 1.oracle数据库自带的scott下的用户表 ...

  4. cpp导入excel到mysql_将EXCEL表格中的数据导入mysql数据库表中

    本文转载自http://blog.sina.com.cn/s/blog_5d972ae00100gjij.html 今天项目上遇到需要将excel中的数据导入到数据库的classify表中,于是乎拼命 ...

  5. Oracle数据库----表中数据的操作(插入、更新、删除数据)

    文章目录 一.插入数据 插入多行数据的简单方法: 1.将表一的全部数据添加到表二中 创建副本Courses1,只复制Courses的结构 将Courses表中的数据拷贝到Courses1中 创建副本的 ...

  6. oracle无法打开表的行集,Oracle错误ORA-22905:无法访问非嵌套表项中的行

    这是我写入的存储过程.在此proc中,"p_subjectid"是从前端传递的一组数字.Oracle错误ORA-22905:无法访问非嵌套表项中的行 PROCEDURE getsu ...

  7. matlab sheet名字,MATLAB得到excel多个非默认sheet名_怎样利用matlab去读取一个excel表中多个sheet的数据并导入一个sheet中?...

    如何用matlab读取一个excel表格中的若干个工作表 如果数字: xlsread('e:/shiyanshuju/shiyanbiaoge','sheet1','B1:D1440') 最好个表格放 ...

  8. 关于SQL 数据库表中的聚集索引和非聚集索引等

    原文地址:http://www.cppblog.com/zuoyinbo/archive/2008/06/03/52075.html          1.概念          索引是在数据库表或者 ...

  9. java实体中文字段_java - Spring JPA实体类是否可以包含不在数据库表中的非数据库字段 - SO中文参考 - www.soinside.com...

    我在SpringBoot中使用Spring JPA和Spring Data Rest.我有一个称为用户的数据库表和该表的实体.我没有此应用程序的控制器.@Entity @Table(name = &q ...

最新文章

  1. 邬贺铨:解读5G技术关键点,及如何影响AIoT
  2. 栈,寄存器,局部变量,内存,语言级别优化程序的方法
  3. Element UI——数字输入框解决方案
  4. 使用Python语言开发爬虫有什么优势?
  5. run sequence between odata request and controller init
  6. 关于无法获取客户端IP地址
  7. Windows系统中常见的进程DOS操作命令
  8. Python3实现汉诺塔问题
  9. 学会这20条,做个聪明的人
  10. python面向过程实践汉诺塔_递归汉诺塔-和递归汉诺塔相关的内容-阿里云开发者社区...
  11. Linux常用命令汇总--cat
  12. What is “Deploy applications configured in Tomcat instance” in IntelliJidea
  13. python音乐推荐系统的设计与实现_个性化音乐推荐系统设计与实现
  14. Eova项目嵌入前端页面介绍
  15. php源码添加多国语言包,为win7系统添加多国语言包的方法
  16. 优酷 DSP 广告投放系统架构实践
  17. 小马哥 高仿三星w2015主板信息W1201-GW-NB82KK-150812刷机主板图
  18. 深度学习-11:神经元、神经网络、人脑和卷积神网络
  19. 备份oracle数据库
  20. 静态URL和动态URL有什么区别呢?

热门文章

  1. pytorch---之pin_memory
  2. Java常用数据类和方法
  3. WordPress学习笔记(二)插件安装
  4. 人工智能学习(三)Anaconda与PyCharm的结合
  5. Laplacian of Gaussian (LOG) 高斯拉普拉斯算子
  6. linux ubuntu内核安装位置,在Ubuntu中安装或升级内核 linux kernel
  7. 怎么编译shell_运维如何才能学好 Shell?
  8. php use后怎么引用函数,php后向引用怎么带入到函数参数
  9. Java添加多行数据到mysql中_Java:使用PreparedStatement将多行插入到MySQL中
  10. .unl 文件 导入 mysql_mysql数据导出导入