博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LambdaQueryWrapper动态加过滤条件 动态Lambda(首发)
阅读量:4073 次
发布时间:2019-05-25

本文共 1241 字,大约阅读时间需要 4 分钟。

1   遇到这样的需求,在baseservice类中处理数据权限,子类可能使用QueryWrapper或者LambdaQueryWrapper调用base类的方法进行查询。

 

2  可以拿到的:PO的类,数据权限属性的属性名(是固定的)

 

   直接上代码:

/**     * 可序列化     */    private static final int FLAG_SERIALIZABLE = 1; //获取当前登录人权限 Integer secretLevel = getUserSecretLevel();        if(secretLevel!=null){            SFunction func = null;            final MethodHandles.Lookup lookup = MethodHandles.lookup();            //po的返回Integer的一个方法            MethodType methodType = MethodType.methodType(Integer.class, entityClass);            final CallSite site;            try {                //方法名叫做:getSecretLevel  转换为 SFunction function interface对象                site = LambdaMetafactory.altMetafactory(lookup,                        "invoke",                        MethodType.methodType(SFunction.class),                        methodType,                        lookup.findVirtual(entityClass, "getSecretLevel", MethodType.methodType(Integer.class)),                        methodType,FLAG_SERIALIZABLE);                func = (SFunction) site.getTarget().invokeExact();                //数据小于这个级别的都查出来                queryWrapper.le(func,secretLevel);            } catch (Throwable e) {                log.error("获取getSecretLevel方法错误",e);            }        }

     

转载地址:http://ohwni.baihongyu.com/

你可能感兴趣的文章
斯坦福大学机器学习——因子分析(Factor analysis)
查看>>
项目导入时报错:The import javax.servlet.http.HttpServletRequest cannot be resolved
查看>>
linux对于没有写权限的文件如何保存退出vim
查看>>
Windows下安装ElasticSearch6.3.1以及ElasticSearch6.3.1的Head插件
查看>>
IntelliJ IDEA 下的svn配置及使用的非常详细的图文总结
查看>>
【IntelliJ IDEA】idea导入项目只显示项目中的文件,不显示项目结构
查看>>
ssh 如何方便的切换到其他节点??
查看>>
JSP中文乱码总结
查看>>
Java-IO-File类
查看>>
Java-IO-java的IO流
查看>>
Java-IO-输入/输出流体系
查看>>
Java实现DES加密解密
查看>>
HTML基础
查看>>
Java IO
查看>>
Java NIO
查看>>
Java大数据:Hbase分布式存储入门
查看>>
大数据学习:Spark RDD操作入门
查看>>
大数据框架:Spark 生态实时流计算
查看>>
大数据入门:Hive和Hbase区别对比
查看>>
大数据入门:ZooKeeper工作原理
查看>>