当前位置: 首页 > news >正文

枣庄网站开发网络舆情管控

枣庄网站开发,网络舆情管控,成都眉山网站建设,上海工商网查询官网需求描述: 需要对mapper查询的入参的某个属性值进行特殊处理后查询 不影响原来业务且方便扩展维护 1,自定义注解 import java.lang.annotation.*;/*** 针对 mapper层入参 按照一定规则进行特殊处理重新赋值*/ Target(ElementType.METHOD) Retention(Ret…

需求描述:

        需要对mapper查询的入参的某个属性值进行特殊处理后查询

        不影响原来业务且方便扩展维护

1,自定义注解


import java.lang.annotation.*;/*** 针对 mapper层入参 按照一定规则进行特殊处理重新赋值*/
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
public @interface MapperRequestData {/*** 指定执行规则的方法,默认方法为:transferRequestData* @return*/String method() default "transferRequestData";Class<? extends MapperRequestDataInterface> operation();
}

2,定义动态处理指定业务的接口


/*** 不同的业务场景 其 针对入参 解析处理规则不同,须根据自身情况实现该接口* @param <T>*/
public interface MapperRequestDataInterface {void transferRequestData(Object request);}

3,定义切面 MapperRequestDataAspect


import com.taia.yms.aop.reponse.inter.MapperRequestDataInterface;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.Signature;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.aspectj.lang.reflect.MethodSignature;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import java.lang.reflect.Method;/*** 针对 mapper层入参进行特殊处理*/
@Component
@Aspect
public class MapperRequestDataAspect {private static final Logger log = LoggerFactory.getLogger(MapperRequestDataAspect.class);//定义pointcut签名@Pointcut("execution(* com.taia.yms.mapper.*.*(..)) && @annotation(com.taia.yms.aop.reponse.MapperRequestData)")private void pointCut() {//方法为空,仅做签名}//对切点方法进行前置增强,就是在调用切点方法前进行做一些必要的操作,这就成为增强@Before("pointCut()")public void getRes(JoinPoint joinPoint){// 获取方法签名Signature signature = joinPoint.getSignature();MethodSignature methodSignature = (MethodSignature) signature;Method method = methodSignature.getMethod();MapperRequestData annotation = method.getAnnotation(MapperRequestData.class);Object[] objects = joinPoint.getArgs();// 查找并获取注解try{// 读取注解的属性Class<? extends MapperRequestDataInterface> operation = annotation.operation();MapperRequestDataInterface operationInstance = operation.getDeclaredConstructor().newInstance();String methoded = annotation.method();Method operationMethod = operation.getDeclaredMethod(methoded, Object.class);operationMethod.invoke(operationInstance, objects);}catch (Exception e){log.error("类[{}]的方法[{}]执行失败,报错:{}",annotation.operation().getName(),annotation.method(),e.getMessage());}}}

4,定义指定业务指定入参处理逻辑


import com.taia.yms.aop.reponse.inter.MapperRequestDataInterface;
import com.taia.yms.entity.reqbody.TechnologyPageReqBody;
import org.springframework.util.CollectionUtils;
import java.util.List;
import java.util.stream.Collectors;public class TechnologySelectConfigListReqRule implements MapperRequestDataInterface {private static final String PREFIX_SRE = "CONTAINS_";@Overridepublic void transferRequestData(Object request) {TechnologyPageReqBody pageReqBody = (TechnologyPageReqBody) request;if(pageReqBody == null || CollectionUtils.isEmpty(pageReqBody.getDataTypeList())){return;}List<String> list = pageReqBody.getDataTypeList();List<String> collect = list.stream().map(v -> PREFIX_SRE + v).collect(Collectors.toList());pageReqBody.setDataTypeList(collect);}
}

5,相关对象类


import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import com.taia.yms.entity.ExportPageReqBody;
import java.util.List;@Data
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = true)
public class TechnologyPageReqBody extends ExportPageReqBody{private Long id;private String fab;private String productId;private String technology;private List<String> dataTypeList;private String createdByName;private String lastUpdatedByName;// ALL、为空、不为空 all isNull  isNotNullprivate String isNullable;
}

import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.util.List;/*** @ClassName ExportPageReqBody* 导出 和 分页数据**/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = true)
public class ExportPageReqBody {/**页码*/@ApiModelProperty(example = "1")private Integer pageNum = 1;/**页面大小*/@ApiModelProperty(example = "10")private Integer pageSize = 10;/**1-导出excel, 0-导出CSV*/private String isExcel;/**1-只导出表头,0或空-导出表头和数据*/private String isEmpty;/**1-配置数据, 0或空-待添加配置数据*/private String isConfig;/**选择导出,有值时只导出选中的id*/private List<Long> selectedIds;/**当前登录用户的userId*/private String userNo;
}

6,在对应mapper层的对应方法加添加使用

    /*** 查询已配置数据(支持字段模糊查询)*/@MapperRequestData(operation = TechnologySelectConfigListReqRule.class)List<WipProductInfoTab> selectConfigList(TechnologyPageReqBody technologyPageReqBody);

http://www.hkea.cn/news/110778/

相关文章:

  • wordpress苗木模板网站搜索排优化怎么做
  • 网站图片引导页怎么做重庆seo招聘
  • 如何做属于自己的领券网站郑州百度网站优化排名
  • 建设银行益阳市分行桃江支行网站公司页面设计
  • vps 网站上传网站seo优化是什么意思
  • wordpress cos腾讯云seo网站优化收藏
  • 鹤岗商城网站建设免费域名申请
  • 江苏三个地方疫情严重抖音视频排名优化
  • 竞价排名广告东莞关键词排名快速优化
  • 做视频网站要什么格式好网络营销公司怎么注册
  • 企业专业网站建设快速网站搭建
  • 武威建设网站的网站google谷歌搜索
  • 长沙公司做网站多少钱推广平台怎么做
  • 现在大家做电商网站用什么源码营销策略都有哪些
  • 可以做试卷的网站英语怎么说seo关键词排名优化系统源码
  • 网站怎么设置支付功能企业网站的主要类型有
  • 成都圣都装饰装修公司北京搜索优化排名公司
  • 境外建设网站贴吧互联网域名注册查询
  • 广州建站工作室淘客推广怎么做
  • 中国最大的网站建设公司百度广告联盟点击一次多少钱
  • wordpress单页主题营销seo手机关键词网址
  • dedecms做电影网站韩国最新新闻
  • 哪个网站做废旧好如何在百度上发布自己的广告
  • 网站表单及商品列表详情模板如何搭建自己的网站
  • 网站域名登记证明百度高级搜索怎么用
  • 国外网站在国内做镜像站点网站搭建费用
  • 网站后台如何添加关键词软件开发公司
  • 手机做网站的网站windows优化大师卸载不了
  • 万网速成网站有哪些 功能自己的网站怎么推广
  • 邯郸哪有做网站的河南百度推广公司