这种情况下,在设计表结构时,一门课对应一个字段,就有些不合适, 因为不知道课程的具体数量,也无法应对后期课程的增加.
考虑只用一个状态标志位,利用位运算,来标识多门课的通过或否....(全1才为1,有0就为0)
对于正数和负数,左移一位就相当于乘以2的1次方,左移n位就相当于乘以2的n次方
如xxxxxx<<2即左移2位,右边空出的位用0填补,高位左移溢出则舍弃该高位
步骤一:
如语文成绩率先出来...,我们约定,以这个字段(记为attr)的第一位,来代表该学生语文有没有通过测评(0否1是)
attr为当前该属性字段的值(从数据库里取出来的值). index为约定的第几位来标识当前业务,index从0...这样就完成了语文科目的处理
----
步骤二:
几天后数学测评结果也出来了,继续用attr,约定以这个字段的第二位,来代表该学生数学有没有通过测评(0否1是)
同样用之前的代码,
记录阶段:
package...如需获取爽哥有无通过第60门课程,1152921504606846975 >> 59 & 1 = 1,即通过
如果将数据库这个attr字段设置为有符号的bigint类型,则最多可标识 64个不同业务的状态