西安做网站维护的公司python怎么学

news/2025/9/23 6:00:28/文章来源:
西安做网站维护的公司,python怎么学,网站模板代码怎么写,新手学做网站相关书籍在本文中#xff0c;我们将为Speedment创建一个插件#xff0c;该插件使用Gson生成序列化和反序列化逻辑#xff0c;从而使其在数据库实体和JSON字符串之间进行映射非常容易。 这将有助于展示Speedment代码生成的可扩展性#xff0c;同时探索Gson库的一些很酷的功能。 Spe… 在本文中我们将为Speedment创建一个插件该插件使用Gson生成序列化和反序列化逻辑从而使其在数据库实体和JSON字符串之间进行映射非常容易。 这将有助于展示Speedment代码生成的可扩展性同时探索Gson库的一些很酷的功能。 Speedment是用于Java的代码生成工具它连接到数据库并用作生成项目的实体和管理器文件的参考。 该工具是非常模块化的允许您编写自己的插件来修改结果代码的外观。 几个人在Gitter聊天中提到的一件事是Speedment实体被声明为抽象的这阻止了它们被自动反序列化。 在本文中我们将研究如何通过自动为数据库中的每个表生成一个自定义TypeAdapter来使用Gson反序列化Speedment实体。 这不仅可以在使用数据库内容的JSON表示时为我们提供更好的性能而且还可以作为有关如何扩展代码生成器以解决问题的一般示例。 步骤1创建插件项目 在上一篇文章中我详细介绍了如何为Speedment创建新的插件所以这里是简短的版本。 创建一个新的Maven项目并将Speedment和Gson设置为依赖项。 pom.xml nameSpeedment Gson Plugin/name descriptionA plugin for Speedment that generates Gson Type Adapters for every table in the database. /descriptionpropertiesproject.build.sourceEncodingUTF-8/project.build.sourceEncodingmaven.compiler.source1.8/maven.compiler.sourcemaven.compiler.target1.8/maven.compiler.targetspeedment.version2.3.7/speedment.version /propertiesdependenciesdependencygroupIdcom.speedment/groupIdartifactIdspeedment/artifactIdversion${speedment.version}/version/dependencydependencyartifactIdgson/artifactIdgroupIdcom.google.code.gson/groupIdversion2.6.2/version/dependency /dependencies步骤2为类型适配器创建翻译器类 接下来我们需要创建将为我们生成新型适配器的转换器。 翻译器是一个类它描述生成的文件将具有的名称路径和内容。 为此它提供了许多便利的方法来简化代码生成。 转换器的基本结构如下所示。 GeneratedTypeAdapterTranslator.java ... public GeneratedTypeAdapterTranslator(Speedment speedment, Generator gen, Table table) {super(speedment, gen, table, Class::of); }Override protected Class makeCodeGenModel(File file) {return newBuilder(file, getClassOrInterfaceName()).forEveryTable((clazz, table) - {// Code generation goes here}).build(); }Override protected String getClassOrInterfaceName() {return Generated getSupport().typeName() TypeAdapter; }Override protected String getJavadocRepresentText() {return A Gson Type Adapter; }Override public boolean isInGeneratedPackage() {return true; } ... 每个转换器都是使用可使用newBuilder方法调用的构建器模式构建的。 稍后在我们要修改现有翻译器时这一点变得很重要。 实际的代码在构建器的forEveryTable方法内部生成。 这是一个回调将针对感兴趣范围中遇到的每个表执行该回调。 在这种情况下翻译器一次只能在一个表上执行因此回调将只执行一次。 有关GeneratedTypeAdapterTranslator-class的完整资源请转到此github页面 。 步骤3创建用于修改管理器界面的装饰器 但是仅生成一堆TypeAdapter是不够的。 我们希望将新代码集成到已经存在的管理器中。 为此我们需要定义一个装饰器该装饰器将在执行默认逻辑后应用于每个生成的管理器。 GeneratedManagerDecorator.java public final class GeneratedManagerDecorator implements TranslatorDecoratorTable, Interface {Overridepublic void apply(JavaClassTranslatorTable, Interface translator) {translator.onMake((file, builder) - {builder.forEveryTable(Translator.Phase.POST_MAKE, (clazz, table) - {clazz.add(Method.of(fromJson, translator.getSupport().entityType()).add(Field.of(json, STRING)));});});} } 装饰器与翻译器类似不同之处在于它仅定义应对现有文件进行的更改。 每个装饰器都在特定阶段执行。 在本例中我们要在生成默认代码后执行因此我们选择POST_MAKE。 我们要添加的逻辑很简单。 在接口中我们需要fromJsonString的其他方法。 我们不需要定义toJson因为每个Speedment管理器都已经从继承的接口获得了toJson。 步骤4创建用于修改Manager实施的装饰器 管理器实现的修改有些棘手。 我们需要为其添加一个Gson实例作为成员变量刚刚添加的新接口方法的实现使用Gson而不是内置序列化器的toJson方法的替代并且我们需要修改manager构造函数使用我们的新TypeAdapter实例化Gson。 GeneratedManagerImplDecorator.java public final class GeneratedManagerImplDecorator implements TranslatorDecoratorTable, Class {Overridepublic void apply(JavaClassTranslatorTable, Class translator) {final String entityName translator.getSupport().entityName();final String typeAdapterName Generated entityName TypeAdapter;final String absoluteTypeAdapterName translator.getSupport().basePackageName() .generated. typeAdapterName;Final Type entityType translator.getSupport().entityType();translator.onMake((file, builder) - {builder.forEveryTable(Translator.Phase.POST_MAKE, (clazz, table) - {// Make sure GsonBuilder and the generated type adapter // are imported.file.add(Import.of(Type.of(GsonBuilder.class)));file.add(Import.of(Type.of(absoluteTypeAdapterName)));// Add a Gson instance as a private memberclazz.add(Field.of(gson, Type.of(Gson.class)).private_().final_());// Find the constructor and define gson in itclazz.getConstructors().forEach(constr - {constr.add(this.gson new GsonBuilder(),indent(.setDateFormat(\ DATE_FORMAT \)),indent(.registerTypeAdapter( entityName .class, new typeAdapterName (this))),indent(.create();));});// Override the toJson()-methodclazz.add(Method.of(toJson, STRING).public_().add(OVERRIDE).add(Field.of(entity, entityType)).add(return gson.toJson(entity, entityName .class);));// Override the fromJson()-methodclazz.add(Method.of(fromJson, entityType).public_().add(OVERRIDE).add(Field.of(json, STRING)).add(return gson.fromJson(json, entityName .class);));});});} }步骤5将所有新类安装到平台中 创建所有新类后我们需要创建一个组件和一个组件安装程序可以从要使用该插件的任何项目中引用该组件和组件安装程序。 GsonComponent.java public final class GsonComponent extends AbstractComponent {public GsonComponent(Speedment speedment) {super(speedment);}Overridepublic void onResolve() {final CodeGenerationComponent code getSpeedment().getCodeGenerationComponent();code.put(Table.class, GeneratedTypeAdapterTranslator.KEY, GeneratedTypeAdapterTranslator::new);code.add(Table.class, StandardTranslatorKey.GENERATED_MANAGER, new GeneratedManagerDecorator());code.add(Table.class,StandardTranslatorKey.GENERATED_MANAGER_IMPL, new GeneratedManagerImplDecorator());}Overridepublic ClassGsonComponent getComponentClass() {return GsonComponent.class;}Overridepublic Software asSoftware() {return AbstractSoftware.with(Gson Plugin, 1.0, APACHE_2);}Overridepublic Component defaultCopy(Speedment speedment) {return new GsonComponent(speedment);} }GsonComponentInstaller.java public final class GsonComponentInstaller implements ComponentConstructorGsonComponent {Overridepublic GsonComponent create(Speedment speedment) {return new GsonComponent(speedment);} }用法 当我们想在项目中使用我们的新插件时我们只需将其添加为pom中的依赖项部分中的依赖项以及作为speedment maven插件下的依赖项。 然后我们向插件添加配置标签如下所示 plugingroupIdcom.speedment/groupIdartifactIdspeedment-maven-plugin/artifactIdversion${speedment.version}/versiondependenciesdependencygroupIdcom.speedment.plugins/groupIdartifactIdgson/artifactIdversion1.0.0/version/dependencydependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion5.1.39/version/dependency/dependenciesconfigurationcomponentscomponent implementationcom.speedment.plugins.gson.GsonComponentInstaller //components/configuration /plugin 然后我们可以重新生成代码然后应该可以访问新的序列化和反序列化逻辑。 final String pippi { \id\:1, \bookId\:-8043771945249889258, \borrowedStatus\:\AVAILABLE\, \title\:\Pippi Långström\, \authors\:\Astrid Lindgren\, \published\:\1945-11-26\, \summary\:\A story about the worlds strongest little girl.\ };books.fromJson(pippi).persist();摘要 在本文中我们创建了一个新的Speedment插件该插件为数据库中的每个表生成了Gson TypeAdapters并将这些适配器与现有的管理器集成在一起。 如果您想要更多有关如何使用Speedment代码生成器来提高生产力的示例 请查看GitHub页面 直到下一次 翻译自: https://www.javacodegeeks.com/2016/10/insert-read-database-using-json.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/911536.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

重庆装修网站建设怎么在各个网站免费推广信息

文章目录 前期工作1. 设置GPU(如果使用的是CPU可以忽略这步)我的环境: 2. 导入数据3. 查看数据 二、数据预处理1. 加载数据2. 可视化数据3. 再次检查数据4. 配置数据集5. 归一化 三、构建VGG-19网络1. 官方模型(已打包好&#xff…

做电商的网站动漫wordpress主题下载地址

目录 1. FPGA的基础 2. FPGA的工作原理 3. FPGA的优势 3.1 灵活性 3.2 快速开发周期 3.3 高性能 4. FPGA的应用领域 4.1 通信系统 4.2 图像处理 4.3 嵌入式系统 4.4 科学研究 5. FPGA的未来展望 1. FPGA的基础 FPGA,即现场可编程门阵列(Fiel…

网站建设详细描述产品的是什么建设网站要多长时间

我们平常用python写些脚本可以方便我们的学习办公,但限制就是需要有python环境才能运行。 那能不能直接在没有python环境的电脑上运行我们的脚本呢? 当然可以,那就是直接把python脚本打包成exe可执行程序(注针对win系统&#xf…

设计企业网站哪家好学做宝宝衣服网站好

ID是设计的时候所指定的ID。 ClientID是当这个控件生成到客户端页面时候,需要在客户端访问时候用的。 UniqueID是当需要参与服务端回传的时候用的。 备注:当控件是子控件的时候(例如在用户控件中的Button),ClientID在H…

学做网站需要多少钱家乡ppt模板免费下载网站

【Miniconda】一文了解conda虚拟环境的作用 🌈 个人主页:高斯小哥 🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程👈 希望得到您的订阅和支持~ &am…

做电商网站前期做什么工作无锡企业网站排名

​在数字化浪潮席卷全球的今天,产业园区正经历着前所未有的变革,数字化运营管理成为各个园区转型升级的发力方向,它不仅能够提升园区的运营管理效率,还能够帮助园区提高服务效能、实现精准招商、增强决策效率,从而全面…

阿里云建站是外包的吗wordpress 当前主题路径

供配电系统智能化监控是指利用先进的监测技术、自动化控制技术、计算机网络技术等,对供配电系统进行实时、全方位的监测和控制,以实现供配电系统的安全、稳定、高效运行。 供配电系统智能化监控的主要功能包括: 实时数据采集:通过…

潍坊网站模板建站陕西响应式网站建设公司

在直播间听到一首好听的歌《我在哪,要去哪》-汤倩。 遇见的事:21~24号抽调去招生。 感受到的情绪:公假吗?给工作量吗?月工作量不够扣钱吗?报销方便吗?有事情,从来不解决后顾&#x…

博物馆网站 微信 微博 建设方案wordpress 一键转微信

深搜板子题&#xff0c;无向图&#xff0c;加边加两个&#xff0c;dfs输入两个参数变量&#xff0c;一个是当前深搜节点&#xff0c;另一个是父节点&#xff08;避免重复搜索父节点&#xff09;&#xff0c;恢复现场 ///首先完成数组模拟邻接表#include<iostream> #incl…

龙华做网站yihe kj电商网站开发教程

再次感谢文华学院的邀请&#xff0c;为经纬集团管理层带来 《啤酒游戏经营决策沙盘》&#xff01; 很多朋友问&#xff1a;“最近是不是啤酒游戏上的少了&#xff1f;” 其实&#xff0c;真正的关键不是游戏本身&#xff0c;而是——如何让大家真正看见复杂系统中的隐性结构。 …

大良网站智能推广如何WordPress怎么加入用户关注

目录 MySQL安装: 1. 数据库基本操作1.1 创建数据库1.2 显示当前数据库1.3 删除数据库1.4 使用数据库/选中数据库 2. SQL中的数据类型2.1 数值类型2.2 字符串类型2.3 时间类型 3. 表的操作3.2 创建表3.1 显示数据库中的表3.3 查看表的详细情况3.4 删除表3.5 注释3. 修改列(了解即…

网站的关键词报价的网站中小企业网站优化

例如 &#xff1a; 下面的配色表画出的图很好看。选择喜欢的颜色&#xff0c;找到代码中颜色部分进行修改即可。 代码部分已经有详细的注释&#xff0c;就不一一解释了。另外&#xff0c;如果想要坐标轴从设定的值开始就把下面代码中的范围xlim&#xff0c;ylim进行注释。 imp…

找哪里做网站荆门网站seo

按照正常流程将Charles安装并设置代理后&#xff0c;手机添加完代理并安装SSL证书&#xff0c;尝试抓取接口时&#xff0c;获取到的接口为unknown且返回内容乱码&#xff0c;如下图所示 解决办法&#xff1a; 在Proxy-SSL Proxying Settings-SSL Proxying下添加想要抓取的服务地…

宁波网站推广方式定制公司网站专题策划方案书

保证Redis和数据库数据一致性是一个复杂但至关重要的问题&#xff0c;特别是在需要高速缓存和持久化存储并存的系统中。以下是一些常用的方法来确保Redis和数据库之间的数据一致性&#xff1a; 一、事务与回滚机制 Redis事务&#xff1a;Redis支持通过MULTI、EXEC、DISCARD和…

网站密码如何找回密码南通建设工程信息网官网

起源 随着Internet的发展&#xff0c;越来越多的企业直接通过Internet进行互联&#xff0c;但由于IP协议未考虑安全性&#xff0c;而且Internet上有大量的不可靠用户和网络设备&#xff0c;所以用户业务数据要穿越这些未知网络&#xff0c;根本无法保证数据的安全性&#xff0…

中学网站系统源码pcms网站开发

常用组件库对比 Hystrix、Resilience4j和Sentinel Hystrix、Resilience4j和Sentinel都是服务容错库&#xff0c;用于在分布式系统中实现诸如隔离、限流和熔断等模式。它们各有特点&#xff0c;在实现这些模式时也有所不同。下面是这三个库在隔离、限流和熔断方面的对比&#x…

济宁高端网站建设如何查看网站的空间

面试题&#xff1a;“如何在Java中清除一个数组中的所有元素&#xff1f;” 在Java中&#xff0c;清除一个数组中的所有元素并不意味着逐个删除数组的每个元素&#xff0c;因为这在数组中是不可能做到的。数组的大小在初始化之后是固定的&#xff0c;无法改变。因此&#xff0…

烟台建网站公司价格北京的重要的网站

Linux 是多用户多任务操作系统&#xff0c;换句话说&#xff0c;Linux 系统支持多个用户在同一时间内登陆&#xff0c;不同用户可以执行不同的任务&#xff0c;并且互不影响。 例如&#xff0c;某台 Linux 服务器上有 4 个用户&#xff0c;分别是 root、www、ftp 和 mysql&…

福州建网站 做网页google网站质量

一、Sphinx介绍 1.1 简介 Sphinx是由俄罗斯人Andrew Aksyonoff开发的一个全文检索引擎。意图为其他应用提供高速、低空间占用、高结果 相关度的全文搜索功能。Sphinx可以非常容易的与SQL数据库和脚本语言集成。当前系统内置MySQL和PostgreSQL 数据库数据源的支持&#xff0c;也…

网站建设石家庄快优阳泉市建设局网站

STP协议 STP协议概念生成树为什么要用STP STP名词解释根网桥根端口指定端口非指定端口 STP的版本802.1DPVSTPVST 快速生成树 STP协议概念 IEEE 802.1d STP&#xff08;生成树协议&#xff0c;Spanning-Tree Protocol&#xff09;协议&#xff1a; ①使冗余端口置于“阻塞状态”…