zoukankan      html  css  js  c++  java
  • java 常量的位运算使用案例

    在编码的过程中,有时因业务逻辑需要,一个关键字有多个数值,且在调用过程中,此关键字数值对应的各位数值有不同的业务需求,就需要对常量进行位运算;

    eg:有关键字status,其中(注:位指二进制运算对应的位):

    位1:是否被屏蔽?            1-是,0-否

    位2:是否包含视频?         1-是,0-否

    位3:是否审核通过?         1-是,0-否

    位4:是否已删除?             1-是,0-否

    位5:是否有过审核动作?  1-是,0-否

    位6:是否将帖子显示在未登陆状态下的列表中?1-是,0-否

    可定义如下常量类:

    public class GlobalConstantsUtil {
    /**
    * Constants defined for [BLOG] table, [status] field.
    */
    public static final Long BLOG_SHIELD = 1L;
    public static final Long BLOG_HAS_VIDEO = 2L;
    public static final Long BLOG_AUDITED = 4L;
    public static final Long BLOG_DELETED = 8L;
    public static final Long BLOG_HAS_AUDITOPERATION = 16L;
    public static final Long BLOG_SHOWONHOMEPAGE = 32L;
    }

    在执行业务时,需求为:未被屏蔽,通过审核,未删除,将帖子显示在未登陆状态下的列表中。

    可设置如下变量,通过位运算得出相关值:

    Long blogExpected = GlobalConstantsUtil.BLOG_AUDITED | GlobalConstantsUtil.BLOG_SHOWONHOMEPAGE;   //审核通过,将帖子显示在未登陆状态下的列表中  36L
    Long excluedStatus = GlobalConstantsUtil.BLOG_SHIELD | GlobalConstantsUtil.BLOG_DELETED;                          // 被屏蔽,被删除   9L

    执行sql语句:

    @Query(nativeQuery = true, value = "select * from blog where transfer = 0 and (status & (?1) = (?1)) and (status & (?2) != (?2))  ORDER By create_time desc limit 0, 10")

    List<Blog> getBlogListForNotLoginUsers(Long blogExpected, Long excludedStatus);

  • 相关阅读:
    微信小程序用setData修改数组或对象中的一个属性值,超好用,最简单的实现方法,不容错过!大神们 都 在 看 的方法!!!
    pythonchallenge1
    pythonchallenge4
    pythonchallenge7
    pythonchallenge9
    pythonchallenge8
    pythonchallenge2
    pythonchallenge0
    递归排序
    pythonchallenge3
  • 原文地址:https://www.cnblogs.com/qqzhulu/p/10152902.html
Copyright © 2011-2022 走看看