本文共 1241 字,大约阅读时间需要 4 分钟。
直接上代码:
/** * 可序列化 */ 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/