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

怎样用dw做网站主页软件开发工具也称为什么工具

怎样用dw做网站主页,软件开发工具也称为什么工具,免费游戏链接入口,在线ps在日常的项目开发中经常会遇到一些取值范围固定的字段#xff0c;例如性别、证件类型、会员等级等#xff0c;此时我们可以利用枚举来最大程度减少字段的乱定义#xff0c;统一管理枚举的值。 SpringMVC中对于枚举也有默认的处理策略#xff1a; 对于RequestParam#xf…在日常的项目开发中经常会遇到一些取值范围固定的字段例如性别、证件类型、会员等级等此时我们可以利用枚举来最大程度减少字段的乱定义统一管理枚举的值。 SpringMVC中对于枚举也有默认的处理策略 对于RequestParamSpring是通过ConverterFactory来处理的大致处理策略是根据枚举名称或枚举下标来转换枚举。 对于RequestBodySpring是通过Jackson配置将json内的枚举值转换为对象的大致处理策略同样是根据枚举名称或枚举下标来转换枚举。 在SpringMVC内对枚举的默认处理逻辑是根据枚举的类名或枚举下标来将请求参数转化为枚举对象这显然不太灵活因此我们需要调整枚举字段的处理逻辑。 RequestParam处理 我们可以自定义ConvertFactory来自定义枚举字段的转化策略。 定义BaseEnum接口规定所有枚举都应该实现此接口 public interface BaseEnumT {/*** 获取枚举值*/T getCode();/*** 根据值获取对应的枚举* param enumTypeClazz 枚举类型类* param value 值*/static T extends BaseEnum T getEnumByCode(ClassT enumTypeClazz, Object value) {if (enumTypeClazz null || value null) {return null;}OptionalT optional Arrays.stream(enumTypeClazz.getEnumConstants()).filter(e -{Object enumCode e.getCode();return Objects.equals(Convert.convert(enumCode.getClass(), value),enumCode);}).findFirst();//如果不存在则抛异常return optional.orElseThrow( ()- new RuntimeException([ enumTypeClazz.getSimpleName() ]参数错误[ value ]));} } 自定义ConverterFactory Component public class EnumConverterFactory implements ConverterFactoryString, BaseEnum {Overridepublic T extends BaseEnum ConverterString, T getConverter(ClassT targetType) {return source - BaseEnum.getEnumByCode(targetType, source);} }注册ConverterFactory Configuration public class SpringMVCConfig implements WebMvcConfigurer {Overridepublic void addFormatters(FormatterRegistry registry) {registry.addConverterFactory(new EnumConverterFactory());}}这样配置后请求参数就会自动转换为枚举了。 //枚举类 AllArgsConstructor Getter public enum Gender implements BaseEnumInteger {MALE(1,男),FEMALE(2,女),;EnumValueprivate Integer code;private String value;}//通过接口接受gender参数能够根据code自动转换为对应的枚举 GetMapping(/test) public Gender insert(Gender gender) {return gender; }RequestBody处理 RequestBody是通过Jackson转换对请求参数进行处理的因此我们只需要自定义反序列化类即可 自定义序列化规则设置json内的值如何转换为枚举 public class EnumDeserializer extends JsonDeserializerBaseEnum {/*** 根据参数值获取对应的枚举* throws IOException* throws JacksonException*/Overridepublic BaseEnum deserialize(JsonParser p, DeserializationContext ctxt) throws IOException, JacksonException {// 当前值final String paramValue p.getText();//获取序列化信息final JsonStreamContext parsingContext p.getParsingContext();// 获取当前序列化的类的对象final Object currentValue parsingContext.getCurrentValue();//获取当前序列化的字段名final String currentName parsingContext.getCurrentName();try {// 反射获取当前序列化字段信息final Field declaredField currentValue.getClass().getDeclaredField(currentName);// 通过字段信息获取对应的枚举的Classfinal ClassBaseEnum targetType (ClassBaseEnum) declaredField.getType();//根据参数值获取对应的枚举BaseEnum baseEnum BaseEnum.getEnumByCode(targetType, paramValue);if (ObjectUtil.isEmpty(baseEnum)) {throw new RuntimeException([ currentName ]参数错误);}//返回枚举return baseEnum;} catch (NoSuchFieldException e) {throw new RuntimeException([ currentName ]参数错误);}}}在枚举类加上 JsonDeserialize(using EnumDeserializer.class) //可以直接加到刚刚定义的BaseEnum接口上这样所有枚举就自动继承了JsonDeserialize(using EnumDeserializer.class)public interface BaseEnumT {……}这样配置后RequestBody就能够自动转换枚举了 PostMapping(/save) public User save(RequestBody User user) {studentService.save(user);return user; }枚举字段返回序列化 如果我们返回的对象内有枚举字段SpringMVC会默认将枚举的名称作为值返回如果我们想指定枚举类的某个属性作为值可以通过JsonValue指定 AllArgsConstructor Getter public enum Gender implements BaseEnumInteger {MALE(1,男),FEMALE(2,女),;//指定转json时使用code作为值JsonValueprivate Integer code;private String value;}或者直接在枚举类上加JsonFormat将枚举转换为对象格式 JsonFormat(shape JsonFormat.Shape.OBJECT) JsonDeserialize(using EnumDeserializer.class) public interface BaseEnumT {…… }MybatisPlus对枚举的处理 MybatisPlus直接在枚举类的属性上加EnumValue即可并且兼容xml内的动态sql AllArgsConstructor Getter public enum Gender implements BaseEnumInteger {MALE(1,男),FEMALE(2,女),;//指定code作为入库时的值EnumValueprivate Integer code;private String value;}
http://www.hkea.cn/news/14501830/

相关文章:

  • 网站推广途径及要点网站开发策划个人简历
  • 网奇e游通旅游网站室内设计联盟官网论坛
  • 上海 国际网站设计佛山网站建设多少钱
  • 静态网站开发步骤网站建设用什么网站好一点
  • 网站建设中服务器搭建方式给帅哥做奴视频网站地址
  • 银川建立网站门户网站功能
  • 惠州地区网站建设公司wordpress图片放大滑动
  • 客户管理系统在哪进入vue做网站对seo
  • 广东官网网站建设平台惠州悦商做网站
  • 现在ui做的比较好的网站海外网站建设平台
  • 东营企业网站制作深圳网站建设前十名
  • 南桥做网站wordpress poststatus
  • 美食网站的建设重庆宣传片2023
  • 免费推广网站入口2020活动策划公司主要做什么
  • 原创网站设计西安网站建设设计公司
  • 界面网页设计培训西安网站优化维护
  • 四川网站开发公司上海最新新闻发布
  • 怎么查看域名网站的容量到期自己写wordpress插件吗
  • 电商类网站有哪些wordpress mip img
  • 上海网站建设制作公司建筑公司电话号码
  • 广东南方通信建设有限公司官方网站wordpress教材.txt
  • 前程无忧做简历网站wordpress搬家后网页空白
  • 个人网站可以做导购吗单页营销型网站建设
  • 二级院系网站建设网站建设的维护工作
  • 百度有个学习的网站建设叫什么mvc做网站用的多不多
  • 我做网站了 圆通南昌购物网站开发
  • 深圳趣网站建设网站开发切换电脑版与手机版
  • 网站域名收费标准seo关键词排名优化报价
  • 百度工具网站改版做网站专业服务
  • 哪家公司建换电站自己可以建设一个网站要钱