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

梅江区住房和城乡建设局官方网站电商培训班

梅江区住房和城乡建设局官方网站,电商培训班,网站去哪做,网站开发素材代码数据字典回显功能设计与实现 文章目录 数据字典回显功能设计与实现1. 业务场景2. 实现设计2.1 注解AOP切面2.2 注解mybatis拦截器2.3 注解序列化2.4 涉及字段直接申明成字典引用类型mybatis拦截器反序列化处理 3. 具体实现 1. 业务场景 我们日常开发中经常会遇到#xff1a;数…数据字典回显功能设计与实现 文章目录 数据字典回显功能设计与实现1. 业务场景2. 实现设计2.1 注解AOP切面2.2 注解mybatis拦截器2.3 注解序列化2.4 涉及字段直接申明成字典引用类型mybatis拦截器反序列化处理 3. 具体实现 1. 业务场景 我们日常开发中经常会遇到数据字典类型的字段存储至数据库的是id或者code然而页面显示的时候却是名称 2. 实现设计 关于解决上述问题有以下几种方案 2.1 注解AOP切面 注解主要起标记作用然后采用切面处理标记字段把id或code转化成字典名称。这种方式可以灵活的标记是否需要回显转化处理后面我采用这种方式举例说明 2.2 注解mybatis拦截器 注解主要起标记作用mybatis拦截器拦截之后判断注解标记字段把id或code转化成字典名称 2.3 注解序列化 注解主要起标记作用需增加专门的序列化处理器序列化的过程中判断注解标记字段把id或code转化成字典名称 2.4 涉及字段直接申明成字典引用类型mybatis拦截器反序列化处理 这种方式最为灵活意思就是把涉及数据字典的字段申明成字典类型(比如说DictData)前端就直接可以拿到字典的所有内容(包括id、code、名称)。 该种方式的实现需要三步操作 1.涉及字段直接申明成字典引用类型 2.mybatis拦截之后通过id或code补全字典数据 3.前端传递的id或code在反序列化的过程中补全字典数据 3. 具体实现 定义方法标记注解主要用来判断该接口是否需要字典转化 Retention(RetentionPolicy.RUNTIME) Target(ElementType.METHOD) Documented public interface NeedEchoDict {}定义字段标记注解主要用来判断字典类型字段 Target(ElementType.FIELD) Retention(RetentionPolicy.RUNTIME) public interface DictData {/*** 字典类型** return*/String type() default ; }AOP切面处理 Slf4j Aspect Component public class DictEchoAspect {Around(annotation(com.jiayuan.common.annotation.NeedEchoDict))public Object translation(final ProceedingJoinPoint pjp) throws Throwable {//目标方法执行Object resultR pjp.proceed();if (ObjectUtil.isNull(resultR)) {return resultR;}//获取返回data值Object result ((Result) resultR).getData();if (result instanceof PageData) {// 分页的情况PageData page (PageData) result;result ((PageData) result).getList();result translate(result);page.setList((List) result);((Result) resultR).setData(page);return resultR;}result translate(result);((Result) resultR).setData(result);return resultR;}/*** 返回值转换增加字典回显** param result* return*/private Object translate(Object result) {if (result instanceof List || result instanceof ArrayList) {for (Object entity : (List) result) {to(entity);}} else {to(result);}return result;}/*** 根据类上注解设置目标属性值** param entity 返回对象*/public void to(Object entity) {Class c entity.getClass();for (; c ! Object.class; c c.getSuperclass()) {try {Field[] fields c.getDeclaredFields();for (Field field : fields) {field.setAccessible(true);Object preValue field.get(entity);Class? type field.getType();if (ObjectUtil.isNotNull(preValue)) {//如果对象中包含list判断list中是否包含注解if (type.equals(List.class) || type.equals(ArrayList.class)) {// 当前集合的泛型类型Type genericType field.getGenericType();if (null genericType) {continue;}if (genericType instanceof ParameterizedType) {for (Object o : (List) preValue) {to(o);}}}//todo 自定义对象方式if (field.isAnnotationPresent(DictData.class)) {final String dictName DictCache.getDictName(preValue.toString());//设置字典内容field.set(entity, dictName);}}}//父类存在子类不存在情况} catch (Exception e) {log.error(字典回显失败{}, JSONUtil.toJsonStr(entity));e.printStackTrace();}}}}使用案例 NeedEchoDict GetMapping(pageForApproval) ApiOperation(审批分页) public ResultPageDataApprovalAcademicActivityResponse pageForApproval(Validated ApprovalAcademicActivityRequest request,Validated PageDTO pageDTO) {PageDataApprovalAcademicActivityResponse page academicActivityService.pageForApproval(request, pageDTO);return Result.ok(page); }Data ApiModel(value 审批分页学术活动结果) public class ApprovalAcademicActivityResponse Serializable {private static final long serialVersionUID -4402178057699015363L;DictDataApiModelProperty(value 活动性质)private String activityNature;DictDataApiModelProperty(value 活动范围)private String activityScope;。。。 }
http://www.huolong8.cn/news/268238/

相关文章:

  • 深圳营销型网站建设制作商创网站 灵感
  • 东平专业的网站制作世界十大互联网公司
  • 江西企业网站定制应用软件是指什么
  • 哈尔滨市建设安全监察网站六盘水南宁网站建设
  • 如何建设与维护网站陕西做教学成果网站的公司
  • 网站推广优化外链专业的微网站公司
  • 网站维保方法流量打不开网站怎么办
  • 山东华泰建设集团有限公司官方网站昆明网站建设猫咪
  • 铜川网站seo大学生毕业设计网站
  • 龙岩网站设计制作做盗版音乐网站
  • 360建设网站免费下载电子商务网站怎么做素材包
  • 宁波网站建站的公司邯郸信息港恋家网
  • 网站开发现在用什么语言企业网站模板演示
  • 公司网站管理制定的作用河南网站建设制作
  • 培训网站开发学校公共资源交易中心是干嘛的
  • 百度网站收录入口西安通程建设工程 网站
  • 招聘网站开发源代码企业邮箱哪家便宜
  • 做网站工资还没有文员高php网站开发最新需求
  • 天津市做公司网站的公司wordpress 备案信息修改
  • 做特卖的网站雅美盛典手机网站建设服务哪家好
  • 长春网站建设xgsite网站建设方案数
  • 集团网站制作方案ppt注册完域名怎么做网站
  • 成都网站整站优化wordpress无法搜索插件
  • 长春建站公司网站WordPress实现扫码登录
  • 网站无法处理请求织梦模板免费
  • 行业电子商务网站建设手机我wordpress
  • 加盟网站建设案例欣赏宝安网站设计哪家最好
  • 有口碑的武进网站建设优设网站官网
  • 可以做网站的编程有什么云南网站优化建站
  • 杭州网站建设怎么样钢丝高频退火设备网站建设