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

电子商务网站的设计工具网站建设需要学多久知乎

电子商务网站的设计工具,网站建设需要学多久知乎,商城app制作,网站建设运营公司排行1.首先定义一个接口#xff0c;接口中有两个方法#xff0c;分别是将属性转换成英文描述和中文描述。 其实就是将数据库中记录的 0 1 #xff0c;转换成后面的描述 这边定义了中文转换为默认方法#xff0c;是因为有些属性不需要进行中文转换#xff0c;或者该属性的枚举…1.首先定义一个接口接口中有两个方法分别是将属性转换成英文描述和中文描述。 其实就是将数据库中记录的 0  1 转换成后面的描述 这边定义了中文转换为默认方法是因为有些属性不需要进行中文转换或者该属性的枚举值中没有中文描述你也可以不定义为默认方法 public interface ColumnConverter {/*** 英文值*/Object enConverter(Object value);/*** 中文值*/default Object cnConverter(Object value) {return enConverter(value);} } 2.然后我们就可以定义一个类该类中有很多静态类【不同的静态类用于不同属性的枚举值转换】代码如下 Slf4j public class ColumnStrategy {private final MapClass? extends ColumnConverter, ColumnConverter converterMap new HashMap();private ColumnStrategy() {}/*** 获取单例*/public static ColumnStrategy getInstance() {return INSTANCE.Instance;}public ColumnConverter getConverter(Class? extends ColumnConverter converterClass) {try {if (converterMap.containsKey(converterClass)) {return converterMap.get(converterClass);}Constructor? extends ColumnConverter constructor converterClass.getConstructor();ColumnConverter columnConverter constructor.newInstance();converterMap.put(converterClass, columnConverter);return columnConverter;} catch (Exception e) {log.error(构造转换器对象异常, e);return null;}}public ColumnConverter getDefaultConverter() {ColumnConverter defaultConverter converterMap.get(AutoConverter.class);if (defaultConverter ! null) {return defaultConverter;}AutoConverter autoConverter new AutoConverter();converterMap.put(AutoConverter.class, autoConverter);return autoConverter;}private static class INSTANCE {private static final ColumnStrategy Instance new ColumnStrategy();}/*** 默认转换器*/public static class AutoConverter implements ColumnConverter {Overridepublic Object enConverter(Object value) {return value;}}public static class CarrierLevelType implements ColumnConverter {Overridepublic Object enConverter(Object value) {return Optional.ofNullable(value).map(e - CarrierTypeEnum.getByCode((int) e)).map(CarrierTypeEnum::getEnDesc).orElse(null);}Overridepublic Object cnConverter(Object value) {return Optional.ofNullable(value).map(e - CarrierTypeEnum.getByCode((int) e)).map(CarrierTypeEnum::getDescription).orElse(null);}}/*** 结果集转换器* 将转换为lt; 前端要求*/public static class OperationDescResultConverter implements ColumnConverter {Overridepublic Object enConverter(Object value) {return ((String) value).replaceAll(KeyboardSpecialCharConstants.LESS, KeyboardSpecialCharConstants.LESS_ESCAPING);}}public static class BusinessStatusType implements ColumnConverter {Overridepublic Object enConverter(Object value) {return Optional.ofNullable(value).map(e - BusinessStatusEnum.getByCode((int) e)).map(BusinessStatusEnum::getValue).orElse(null);}Overridepublic Object cnConverter(Object value) {return Optional.ofNullable(value).map(e - BusinessStatusEnum.getByCode((int) e)).map(BusinessStatusEnum::getCnValue).orElse(null);}}public static class PriceCheckType implements ColumnConverter {Overridepublic Object enConverter(Object value) {return Optional.ofNullable(value).map(e - PriceCheckModeEnum.getEnumByCode((int) e)).map(PriceCheckModeEnum::getModeDescEn).orElse(null);}Overridepublic Object cnConverter(Object value) {return Optional.ofNullable(value).map(e - PriceCheckModeEnum.getEnumByCode((int) e)).map(PriceCheckModeEnum::getModeDesc).orElse(null);}}public static class RealPriceCalType implements ColumnConverter {Overridepublic Object enConverter(Object value) {return Optional.ofNullable(value).map(e - RealPriceCalMethodEnum.getEnumByCode((int) e)).map(RealPriceCalMethodEnum::getMethodDescEn).orElse(null);}Overridepublic Object cnConverter(Object value) {return Optional.ofNullable(value).map(e - RealPriceCalMethodEnum.getEnumByCode((int) e)).map(RealPriceCalMethodEnum::getMethodDesc).orElse(null);}}}3.然后我们定义一个注解该注解用于我们实际进行比较的类中上具体值是否需要进行枚举值转换以及字段的中英文名称 Target(ElementType.FIELD) Retention(RetentionPolicy.RUNTIME) public interface ColumnInfo {/*** 字段中文名*/String cnName() default ;/*** 字段英文名*/String enName() default ;/*** 值转换器(英文)* 适用于枚举型转换*/Class? extends ColumnConverter converter() default ColumnStrategy.AutoConverter.class;/*** 是否是用户数组*/boolean isUserList() default false; } 4.然后我们就可以在实际需要进行比较的类上加上该注解【需要进行枚举值转换的属性我们可以在属性上面的注解中加上converter 然后注入对应的转换器即可】示例代码如下 Data public class DTO {/*** 业务名称*/ColumnInfo(cnName 业务名称, enName Business name)private String bizCode;/*** 国别*/ColumnInfo(cnName 国家, enName Country)private String country;/*** 国别*/ColumnInfo(cnName 到期时间, enName Expire time)private String expireTime;/*** 业务状态*/ColumnInfo(cnName 业务状态, enName status, converter ColumnStrategy.BusinessStatusType.class)private Integer status;/*** 是否校验价格*/ColumnInfo(cnName 是否校验价格, enName Is check price, converter ColumnStrategy.PriceCheckType.class)private Integer priceCheckMode;}5.现在就可以直接传入修改前后的两个对象利用反射对其进行修改值的检测了 //调用示例 getChangeFields(DTO.class, from, to, descCnList, descEnList); //具体方法代码如下 private void getChangeFields(Class clazz, Object obj1, Objectobj2, ArrayListString cnList, ArrayListString enList) {try {// 解析对象1和对象2的JSONObjectJSONObject object1 JSONUtil.parseObj(obj1);JSONObject object2 JSONUtil.parseObj(obj2);if (object1.isEmpty() || object2.isEmpty()) {return;}// 获取该类的所有属性Field[] fields clazz.getDeclaredFields();for (Field field : fields) {// 设置属性可访问field.setAccessible(true);// 获取属性名String name field.getName();ColumnInfo targetColumnInfo field.getAnnotation(ColumnInfo.class);ColumnConverter columnConverter getColumnConverter(targetColumnInfo);// 判断对象1和对象2的属性数量是否不为0如果是创建则object2为null// 判断对象1和对象2的属性值是否都不为空由于有一些属性始终为null所以需要过滤掉不然会空指针异常Object o1 object1.get(name);Object o2 object2.get(name);// 判断对象1和对象2的属性值是否不相等if (ObjectUtil.equals(o1, o2)) {continue;}if (Constants.CHECK_CONVERT_FILED.contains(name)) {Object cnFrom ObjectUtil.isNotEmpty(o1) ? columnConverter.cnConverter(o1) : StringPool.EMPTY;Object cnTo ObjectUtil.isNotEmpty(o2) ? columnConverter.cnConverter(o2) : StringPool.EMPTY;Object enFrom ObjectUtil.isNotEmpty(o1) ? columnConverter.enConverter(o1) : StringPool.EMPTY;Object enTo ObjectUtil.isNotEmpty(o2) ? columnConverter.enConverter(o2) : StringPool.EMPTY;// 添加属性名到列表中cnList.add(String.format(%s【%s】更新为【%s】, targetColumnInfo.cnName(), cnFrom, cnTo));enList.add(String.format(%s【%s】 changed to 【%s】, targetColumnInfo.enName(), enFrom, enTo));} else {o1 ObjectUtil.isNotEmpty(o1) ? o1 : StringPool.EMPTY;o2 ObjectUtil.isNotEmpty(o2) ? o2 : StringPool.EMPTY;if (ObjectUtil.isNotEmpty(targetColumnInfo.cnName())) {cnList.add(String.format(%s【%s】更新为【%s】, targetColumnInfo.cnName(), o1, o2));}if (ObjectUtil.isNotEmpty(targetColumnInfo.enName())) {enList.add(String.format(%s【%s】 changed to 【%s】, targetColumnInfo.enName(), o1, o2));}}}} catch (Exception e) {// 获取异常信息详情log.error(---Failed to check attributes---, e);}}
文章转载自:
http://www.morning.sgmgz.cn.gov.cn.sgmgz.cn
http://www.morning.blfll.cn.gov.cn.blfll.cn
http://www.morning.bryyb.cn.gov.cn.bryyb.cn
http://www.morning.fdmfn.cn.gov.cn.fdmfn.cn
http://www.morning.zlrrj.cn.gov.cn.zlrrj.cn
http://www.morning.dyhlm.cn.gov.cn.dyhlm.cn
http://www.morning.llxyf.cn.gov.cn.llxyf.cn
http://www.morning.lzrpy.cn.gov.cn.lzrpy.cn
http://www.morning.lwqst.cn.gov.cn.lwqst.cn
http://www.morning.lnsnyc.com.gov.cn.lnsnyc.com
http://www.morning.lcxzg.cn.gov.cn.lcxzg.cn
http://www.morning.nstml.cn.gov.cn.nstml.cn
http://www.morning.kczkq.cn.gov.cn.kczkq.cn
http://www.morning.clyhq.cn.gov.cn.clyhq.cn
http://www.morning.cwyrp.cn.gov.cn.cwyrp.cn
http://www.morning.lgtzd.cn.gov.cn.lgtzd.cn
http://www.morning.krqhw.cn.gov.cn.krqhw.cn
http://www.morning.lxdbn.cn.gov.cn.lxdbn.cn
http://www.morning.rxydr.cn.gov.cn.rxydr.cn
http://www.morning.zyffq.cn.gov.cn.zyffq.cn
http://www.morning.kdnrp.cn.gov.cn.kdnrp.cn
http://www.morning.tpmnq.cn.gov.cn.tpmnq.cn
http://www.morning.kxltf.cn.gov.cn.kxltf.cn
http://www.morning.tyklz.cn.gov.cn.tyklz.cn
http://www.morning.zzgkk.cn.gov.cn.zzgkk.cn
http://www.morning.tbqdm.cn.gov.cn.tbqdm.cn
http://www.morning.bbgr.cn.gov.cn.bbgr.cn
http://www.morning.wptdg.cn.gov.cn.wptdg.cn
http://www.morning.ldpjm.cn.gov.cn.ldpjm.cn
http://www.morning.zqfz.cn.gov.cn.zqfz.cn
http://www.morning.jlxqx.cn.gov.cn.jlxqx.cn
http://www.morning.lrplh.cn.gov.cn.lrplh.cn
http://www.morning.wqngt.cn.gov.cn.wqngt.cn
http://www.morning.xppj.cn.gov.cn.xppj.cn
http://www.morning.dxpzt.cn.gov.cn.dxpzt.cn
http://www.morning.bxyzr.cn.gov.cn.bxyzr.cn
http://www.morning.nbfkk.cn.gov.cn.nbfkk.cn
http://www.morning.rshs.cn.gov.cn.rshs.cn
http://www.morning.dmkhd.cn.gov.cn.dmkhd.cn
http://www.morning.nzwp.cn.gov.cn.nzwp.cn
http://www.morning.hcgbm.cn.gov.cn.hcgbm.cn
http://www.morning.gwmjy.cn.gov.cn.gwmjy.cn
http://www.morning.gthgf.cn.gov.cn.gthgf.cn
http://www.morning.wnkbf.cn.gov.cn.wnkbf.cn
http://www.morning.glnfn.cn.gov.cn.glnfn.cn
http://www.morning.rlwcs.cn.gov.cn.rlwcs.cn
http://www.morning.yqfdl.cn.gov.cn.yqfdl.cn
http://www.morning.rlbc.cn.gov.cn.rlbc.cn
http://www.morning.qnzld.cn.gov.cn.qnzld.cn
http://www.morning.zdhnm.cn.gov.cn.zdhnm.cn
http://www.morning.jftl.cn.gov.cn.jftl.cn
http://www.morning.bfhrj.cn.gov.cn.bfhrj.cn
http://www.morning.qlznd.cn.gov.cn.qlznd.cn
http://www.morning.mgtmm.cn.gov.cn.mgtmm.cn
http://www.morning.qrcxh.cn.gov.cn.qrcxh.cn
http://www.morning.btcgq.cn.gov.cn.btcgq.cn
http://www.morning.bchhr.cn.gov.cn.bchhr.cn
http://www.morning.sqnxk.cn.gov.cn.sqnxk.cn
http://www.morning.dkfrd.cn.gov.cn.dkfrd.cn
http://www.morning.xgzwj.cn.gov.cn.xgzwj.cn
http://www.morning.bwygy.cn.gov.cn.bwygy.cn
http://www.morning.kzpxc.cn.gov.cn.kzpxc.cn
http://www.morning.yxmcx.cn.gov.cn.yxmcx.cn
http://www.morning.gcfrt.cn.gov.cn.gcfrt.cn
http://www.morning.ssmhn.cn.gov.cn.ssmhn.cn
http://www.morning.rqrxh.cn.gov.cn.rqrxh.cn
http://www.morning.bbxbh.cn.gov.cn.bbxbh.cn
http://www.morning.blqmn.cn.gov.cn.blqmn.cn
http://www.morning.gjmll.cn.gov.cn.gjmll.cn
http://www.morning.pzjrm.cn.gov.cn.pzjrm.cn
http://www.morning.rrdch.cn.gov.cn.rrdch.cn
http://www.morning.gpsrk.cn.gov.cn.gpsrk.cn
http://www.morning.drzkk.cn.gov.cn.drzkk.cn
http://www.morning.skpdg.cn.gov.cn.skpdg.cn
http://www.morning.pthmn.cn.gov.cn.pthmn.cn
http://www.morning.rgpy.cn.gov.cn.rgpy.cn
http://www.morning.sypby.cn.gov.cn.sypby.cn
http://www.morning.hypng.cn.gov.cn.hypng.cn
http://www.morning.ynlpy.cn.gov.cn.ynlpy.cn
http://www.morning.qnrpj.cn.gov.cn.qnrpj.cn
http://www.tj-hxxt.cn/news/280198.html

相关文章:

  • 帝国cms影视网站模板注册 网站开发 公司
  • 网站列表效果建筑模板厂家联系方式
  • 网站推广指标包括( )。做好网站维护管理
  • 上海做网站联系电话常州建设银行新北分行网站
  • 免费网站建设ppt模板汕头八景
  • 怎么做网站浏览量分析公司网站英文
  • 知乎 网站建设海南网站建设
  • 网游网站开发怎么给一个网站做推广
  • 网站设计是不是会要用代码做网络推销
  • 网站主要栏目做app多少钱
  • 网站域名申请做外贸公司网站重不重要
  • 网站建设项目延期验收申请报告企业网站数据库表设计
  • w微信网站开发猎头公司面试一般会问什么问题
  • 通过高新区网站建设织梦能不能做门户网站
  • 杭州有哪些性价比高的网站建设服务商网站后台安全密码
  • 四川网站建设外包业务域名服务商怎么查询
  • 义乌婚介网站建设制作html购物网站源代码
  • 网站名称怎么起好听网站开发验收单
  • 宁波企业网站开发公司espcms易思企业网站系统
  • 个体营业执照可以做网站搞推广吗北京网站建设最好公司
  • 网站开发过程中出现的问题收录优美图片
  • cad dwt模板做网站模版毕业设计代做的网站好
  • 巴音郭楞库尔勒网站建设南京模板建站哪家好
  • 西安英文旅游网站建设手机网站模板 织梦
  • 网站推广软件价格wordpress格式
  • 网络营销网站建设知识电子商务主要学什么就业工资
  • 腾讯云服务器用什么软件做网站知名的企业网站建设
  • 安徽苏亚建设安装有限公司网站seo搜索优化工程师招聘
  • html做旅游网站重庆档案馆建设网站
  • 网站建站公司广州新闻热点事件及评论