当前位置: 首页 > 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.yayakq.cn/news/418727/

相关文章:

  • 政务网站建设 云南 公司最珠海app
  • 网站流量显示网络推广外包怎么样
  • 电子商务网站建设实训感想怎么破解别人做的付费网站
  • 下载的网站模板怎么改巩义服务专业网站建设
  • 建设部网站监理注销查询如何做公司官网
  • 小地方的旅游网站怎么建设wordpress更换模板
  • 信阳专业网站建设建站外贸网站建设
  • cms企业网站源码网站会员系统功能
  • 中英文微信网站开发微信小程序分销系统
  • 坪山区住房和建设局网站wordpress讲解
  • 电子网站商业策划书重庆建设工程质量监督检测中心有限公司
  • 做外贸网站注意湛江人才网招聘信息网
  • 莱芜区宣传部网站百度seo优化招聘
  • 宁波seo整站优化网站优化加盟
  • 怎么样做网站视频拍大师官方网站 图片做视频
  • 网站推广的几个阶段寻找电销团队合作
  • 做零食用哪个网站好建设银行招生网站
  • 哈尔滨 做网站公司有哪些wordpress自定义登录地址
  • 做准考证的网站山西有哪些做网站的公司
  • 专建网站搭建一个论坛
  • 台州市城市建设规划局网站金华高端网站设计
  • 什么是网站风格策划的重点麻将网站开发
  • 模型外包网站asp.net mvc 5 网站开发之美 pdf
  • 服装网站模板免费下载网站开发主要学什么
  • 网站广告网络推广价格低电脑如何建立网站
  • 重庆网站建设的意义沈阳男科医院去哪里
  • 郑州推广网站网站开发 在线报名
  • 一般网站的字体是什么烟台网站建设哪家好呢
  • 网站备案查询不到专业做网站多少钱
  • 广东商城网站建设漂亮又简单的logo图片