1、遇到这样的需求,在barvice类记梁任公先生的一次演讲中处理数据权限,子类可能使用querywrapper或者lambdaquerywrapper调用ba类的方法进行查询。
2、可以拿到的:po的类,数据权限属性的属性名(是固定的)
直接上代码:
/** * 可序列化 */ private static final int flag_rializable = 1; //获取当前登录人权限 integer cretlevel = geturcretlevel(); if(cretlevel!=null){ sfunction func = null; final methodhandles.lookup lookup = methodhandles.lookup(); //po的返回integer的一个方法 methodtype methodtype = methodtype.methodtype(integer.class, entityclass); final callsite site; try { //方法名叫做:getcretlevel 转换为 sfunction function interface对象 site = lambdametafactory.altmetafactory(lookup, "invoke", methodtype.methodtype(sfunction.class), methodtype, lookup.findvirtual(entityclass, "getcretlevel", methodtype.methodtype(integer.class)), methodtype,flag_rializable); func = (sfunction) site.gettarget().invokeexact(); //数据小于这个级别的都查出来 querywrapper.le(func,cretlevel); } catch (throwable e) { log.error("获取getcretlevel方法错误",e); } }
contracttemplate::gettemplatecode 转为对应的字段
lambdaquerywrapper<someclass> objectlambdaquerywrapper = wrappers.lambdaquery(); objectlambdaquerywrapper.eq(archdto.gettemplatecode() != null, contracttemplate::gettemplatecode, archdto.gettemplatecode()); ipage<someclass> page = page(mybatisplusutil.tpageparams(pageno, pagesize), objectlambdaquerywrapper); return page
querywrapper
querywrapper<someclass> querywrapper = wrappers.query(); querywrapper.eq(archdto.gettemplatecode() != null, templateconst.col_template_code, archdto.gettemplatecode()) .ge(archdto.getstartdate() != null, templateconst.col_create_time, archdto.getstartdate()) .lt(archdto.getenddate() != null, templateconst.col_create_time, dateutils.adddays(archdto.getenddate(), 1)) .eq(archdto.getcontractcategoryid() != null, templateconst.col_category_id, archdto.getcontractcategoryid()) .and(i -> i.like(te玉米须的药用mplateconst.col_template_name, archdto.getkeyword()).or().like(templateconst.col_description, archdto.getkeyword())) .eq(archdto.getis_enabled() != null, templateconst.col_is_enabled, archdto.getis_enabled()) // 未标志删除的数据 .eq(commonconst.dbcolname.del_flag, commonconst.inabled.enabled.getcode()) .orderbydesc(templateconst.col_create_time) ; ipage<contracttemplate> page = pag开车时听的英文歌e(mybatisplusutil.tpageparams(pageno, pagesize),奇数和偶数的概念 querywrapper); return mybatisplusutil.parpagedto(page);爱国手抄报图片
以上为个人经验,希望能给大家一个参考,也希望大家多多支持www.887551.com。
本文发布于:2023-04-04 13:46:26,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/cd2d2dc100d78f63b6acc183daba2bc3.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:使用LambdaQueryWrapper动态加过滤条件 动态Lambda.doc
本文 PDF 下载地址:使用LambdaQueryWrapper动态加过滤条件 动态Lambda.pdf
留言与评论(共有 0 条评论) |