• 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);

  • 相关阅读:
    docker删除容器再删除镜像
    centOS7安装docker遇到 [Errno 14] curl#35
    设置centos7界面语言为中文
    sublime查看项目代码多少行
    1. 常用及特殊
    7.逆波兰,二叉树三叉树
    6.表单提交,input键盘变搜索,有关自定义属性input操作
    5.字符串的第一次见到的方法
    2.手机上浏览器看控制台的插件
    1. 时间插件
  • 原文地址:https://www.cnblogs.com/qqzhulu/p/10152902.html
Copyright © 2020-2023  润新知