Python 官方文档:入门教程 => 点击学习
目录LambdaQueryWrapper动态加过滤条件 动态Lambdamybatis-plus QueryWrapper LambdaQueryWrapperLambdaQuery
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);
}
}
ContractTemplate::getTemplateCode 转为对应的字段
LambdaQueryWrapper<SomeClass> objectLambdaQueryWrapper = Wrappers.lambdaQuery();
objectLambdaQueryWrapper.eq(searchDto.getTemplateCode() != null, ContractTemplate::getTemplateCode, searchDto.getTemplateCode());
IPage<SomeClass> page = page(MybatisPlusUtil.setPageParams(pageNo, pageSize), objectLambdaQueryWrapper);
return page
QueryWrapper
QueryWrapper<SomeClass> queryWrapper = Wrappers.query();
queryWrapper.eq(searchDto.getTemplateCode() != null, TemplateConst.COL_TEMPLATE_CODE, searchDto.getTemplateCode())
.ge(searchDto.getStartDate() != null, TemplateConst.COL_CREATE_TIME, searchDto.getStartDate())
.lt(searchDto.getEndDate() != null, TemplateConst.COL_CREATE_TIME, DateUtils.aDDDays(searchDto.getEndDate(), 1))
.eq(searchDto.getContractCateGoryId() != null, TemplateConst.COL_CATEGORY_ID, searchDto.getContractCategoryId())
.and(i -> i.like(TemplateConst.COL_TEMPLATE_NAME, searchDto.geTKEyword()).or().like(TemplateConst.COL_DESCRIPTION, searchDto.getKeyword()))
.eq(searchDto.getIs_enabled() != null, TemplateConst.COL_IS_ENABLED, searchDto.getIs_enabled())
// 未标志删除的数据
.eq(CommonConst.DBColName.DEL_FLAG, CommonConst.IsEnabled.ENABLED.getCode())
.orderByDesc(TemplateConst.COL_CREATE_TIME)
;
IPage<ContractTemplate> page = page(MybatisPlusUtil.setPageParams(pageNo, pageSize), queryWrapper);
return MybatisPlusUtil.parsePageDTO(page);
以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。
--结束END--
本文标题: 使用LambdaQueryWrapper动态加过滤条件 动态Lambda
本文链接: https://lsjlt.com/news/162129.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0