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

定制类网站个人网站优秀

定制类网站,个人网站优秀,餐饮管理系统有哪些,wordpress页面转移前言 项目中经常需要后端将字典类型字段值的中文名称返回给前端。通过sql中关联字典表或者自定义函数不仅影响性能还不能使用mybatisplus自带的查询方法#xff0c;所以推荐使用自定义注解、Json序列化器#xff0c;Spring的缓存功能实现自动转换字典类型字段。以下实现Spri…前言 项目中经常需要后端将字典类型字段值的中文名称返回给前端。通过sql中关联字典表或者自定义函数不仅影响性能还不能使用mybatisplus自带的查询方法所以推荐使用自定义注解、Json序列化器Spring的缓存功能实现自动转换字典类型字段。以下实现SpringBoot版本为2.6.13。 一、自定义字典注解 import com.fasterxml.jackson.annotation.JacksonAnnotationsInside; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.common.utils.DictSerializer;import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;/**定义一个自定义注解用于标识需要进行字典自动翻译的字段。**/ Target({ElementType.FIELD}) //表示它只能应用在类的字段上。 Retention(RetentionPolicy.RUNTIME) //确保注解在运行时可用。 JacksonAnnotationsInside JsonSerialize(using DictSerializer.class)//指定使用DictSerializer来处理被注解字段的序列化不加Dict注解的字段不会被DictSerializer处理。 public interface Dict {/*** 字典代码*/String type() default ;/*** 字段后缀*/String suffix() default Name; }二、自定义Json序列化器 import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.JsonSerializer; import com.fasterxml.jackson.databind.SerializerProvider; import lombok.SneakyThrows; import java.io.IOException; import java.util.Objects;/**Dict注解中引入了JsonSerializer加了Dict注解的字段的序列化会被DictSerializer处理。不能在DictSerializer 类上加JsonComponent注解或者自定义配置类 JacksonConfig来注册Json序列化器使用注解或配置类注册序列化器会使其全局生效任何字段的序列化会被DictSerializer处理。**/ public class DictSerializer extends JsonSerializerObject {SneakyThrowsOverridepublic void serialize(Object value, JsonGenerator gen, SerializerProvider serializerProvider) throws IOException {// 写入原字段的值gen.writeObject(value);if (Objects.nonNull(value)) {// 获取数据字典项服务实例// 不使用全局变量和在构造函数中获取Bean延迟加载Bean避免构造函数初始化空指针问题DictService dictService SpringContextHolder.getBean(SysDictItemService.class);// 序列化字段名称String fieldName gen.getOutputContext().getCurrentName();// 字典项注解对象Dict dictAnno gen.getCurrentValue().getClass().getDeclaredField(fieldName).getAnnotation(Dict.class);String dictItemName dictService.getDictItemName(dictAnno.type(), value);// 写入新字段名称gen.writeFieldName(fieldName dictAnno.suffix());// 写入新字段的值gen.writeString(dictItemName);}} }三、Spring上下文工具类 Component public class SpringContextHolder implements ApplicationContextAware {private static ApplicationContext context;public static T T getBean(ClassT clazz) {return context.getBean(clazz);}Overridepublic void setApplicationContext(ApplicationContext ctx) {context ctx;} } 三、字典服务层含缓存 1.SpringBoot启动类上加EnableCaching注解开启缓存功能 2.根据字典代码和字典项代码查询字典项名称 /*** Cacheable为SpringBoot自带的缓存注解使用字典代码字典项代码作为缓存的key使用该注解会自动 * 缓存getDictItemName方法的返回值。*/Cacheable(value dictCache, key #dictCode:#code)Overridepublic String getDictItemName(String dictCode, Object code) {ListSysDictItem itemList ......;String value null;if(CollectionUtils.isNotEmpty(itemList)){value itemList.get(0).getItemName();}return Optional.ofNullable(value).orElse(code.toString());}3.新增或修改字典项 /*** CachePut注解是SpringBoot自带的缓存注解使用该注解在更新字典时会自动更新字典缓存注意此处 * 的key要与getDictItemName方法Cacheable注解中的key一致saveOrUpdateDictItem方法必须要返回要* 缓存的内容即字典项名称。*/CachePut(value dictCache, key #dictItem.dictCode:#dictItem.itemCode)Overridepublic String saveOrUpdateDictItem(SysDictItem dictItem) {String itemName null;int con;if(StringUtils.isBlank(dictItem.getItemId())){//新增con baseMapper.insert(dictItem);} else {//修改con baseMapper.updateById(dictItem);}if(con 0){itemName dictItem.getItemName();}return itemName;}参考资料 1.百度DeepSeek-R1满血版搜索结果 2.csdn收藏Springboot中的https://blog.csdn.net/hangbingbihai/article/details/145452376?spm1001.2014.3001.5506 https://blog.csdn.net/demo_yo/article/details/129157902?spm1001.2014.3001.5506
http://www.dnsts.com.cn/news/59855.html

相关文章:

  • 猎头可以做单的网站盐城网盐城网站建设站建设
  • 建网站的公司不肯签合同wordpress排版
  • 企业网站建设维护手机网站怎么做微信登陆6
  • 深圳专业做网站排名哪家好在线制作软件
  • 信息免费建站网站有哪些手机网站公司
  • 手机论坛网站html官方网站
  • 学校网站的建设目标是什么意思怎么提升网站的流量
  • 临沂网站建设制作wordpress装在根目录文件夹中_如何通过域名直接访问?
  • 阿里接外包吗网站开发wordpress tag插件下载
  • 兰州道路建设情况网站巩固网站访客量
  • 学校学生网站模板下载社交媒体市场营销
  • jsp 网站开发如何创建企业邮箱
  • 除了Joomla用什么做网站好铜梁旅游网站建设管理
  • 网站建设设计设计公司哪家好一键转换wordpress
  • 网站建设方案2018免费加精准客源
  • c2c网站建站的标准小程序开发公司排行
  • 网站业务维护公司主页格式
  • 四川通信建设工程有限公司网站网站建设ydwzjs
  • 外贸网站平台做网站如何引流
  • 网站三要素网站建设报价单模板下载
  • jsp做的网页是网站吗丹徒网站
  • 中山网站建设多少钱企业网站建设渠道
  • 网站备案多长时间无锡优化推广
  • wordpress 网站图标设置做淘宝推广开网站合适
  • 张家港高端网站建设公司北京软装设计公司前十名
  • 炫客网站建设域名被锁定网站打不开怎么办
  • 网站名称大全从事广告设计需要学什么
  • 免费网站建设哪个好?宁波seo外包代运营
  • 企业网站开源网站开发研发合同
  • 做网站手机软件苏州网站建设书生商友