珠宝网站模板免费下载,群辉做网站服务器,嘉鱼网站建设公司,网站导流应该怎么做动态代码生成 静态代码生成Speedment是一个开源工具包 #xff0c;可用于生成Java实体和管理器以与数据库进行通信。 如果您需要域模型的对象关系映射#xff0c;那么这很好#xff0c;但是在某些情况下#xff0c;您可能希望使用数据库作为模板来生成完全不同的东西。 在本… 动态代码生成 静态代码生成 Speedment是一个开源工具包 可用于生成Java实体和管理器以与数据库进行通信。 如果您需要域模型的对象关系映射那么这很好但是在某些情况下您可能希望使用数据库作为模板来生成完全不同的东西。 在本文中我将向您展示一个hack您可以使用该hack接管Speedment中的该代码生成器并将其用于个人目的。 在本文的结尾我们将提供一个完全空白的代码生成器我们可以对其进行编程以进行竞标 背景 Speedment旨在用作Maven的插件。 通过调用各种新的Maven目标我们可以指示Speedment连接到数据库生成源代码并从我们的项目中删除所有生成的文件。 它还包含一个图形用户界面使您可以轻松地基于从数据库中收集的元数据配置生成作业。 现在想象一下我们可以通过分析该元数据收集的所有信息。 我们知道存在哪些表知道它们具有的所有约束以及各个列具有什么类型。 可能有数百万个用例我们可以从该元数据自动生成内容中受益。 按照本文中的步骤我们可以做所有这些事情。 步骤1建立定期加速项目 创建一个新的Maven项目并将以下内容添加到pom.xml文件中 pom.xml propertiesspeedment.version3.0.1/speedment.versionmysql.version5.1.39/mysql.version
/propertiesdependenciesdependencygroupIdcom.speedment/groupIdartifactIdruntime/artifactIdversion${speedment.version}/versiontypepom/type/dependency
/dependenciesbuildpluginsplugingroupIdcom.speedment/groupIdartifactIdspeedment-maven-plugin/artifactIdversion${speedment.version}/versiondependenciesdependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion${mysql.version}/version/dependency/dependencies/plugin/plugins
/build 我们添加了Speedment作为运行时依赖项并配置了Maven插件以使用标准MySQL JDBC驱动程序连接到我们的数据库。 大 现在您可以访问许多新的Maven目标。 例如如果我们要启动Speedment UI可以通过运行以下命令来实现 mvn speedment:tool 如果我们现在这样做Speedment将以正常模式启动使我们能够连接到数据库并从数据库中生成实体和管理器以使用Java 8流与该数据库进行通信。 这不是我们这次想要做的。 我们希望对其进行修改以使其完全满足我们的要求。 因此我们继续修改pom。 步骤2修改插件声明 速度以模块化的方式构建由不同的工件负责不同的任务。 所有预先存在的生成器任务都位于一个名为“ com.speedment.generatorgenerator-standard”的工件中。 那就是我们要罢工的地方 通过从类路径中删除该工件我们可以防止Speedment生成我们不希望生成的任何东西。 我们将pom修改如下 ...
plugingroupIdcom.speedment/groupIdartifactIdspeedment-maven-plugin/artifactIdversion${speedment.version}/versiondependenciesdependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion${mysql.version}/version/dependency!-- Add this: --dependencygroupIdcom.speedment/groupIdartifactIdtool/artifactIdversion${speedment.version}/versiontypepom/typeexclusionsexclusiongroupIdcom.speedment.generator/groupIdartifactIdgenerator-standard/artifactId/exclusion/exclusions/dependency/dependencies
/plugin
... 那是什么 我们通过添加一个来排除依赖项 那怎么能工作呢 好吧Speedment旨在包含尽可能少的代码除非应用程序明确需要。 “ com.speedmenttool-artifact”已经是maven插件的依赖项通过在maven插件的dependencies部分中提及它我们可以将设置附加到其配置中。 在这种情况下我们说我们希望插件可以访问该工具但我们不希望标准生成器。 但是这里有一个问题。 如果我们尝试启动speedmenttool目标我们将获得一个例外。 原因是Speedment 希望标准翻译器位于类路径中。 这是第二个丑陋的入侵发生的地方。在我们的项目中我们创建一个名为com.speedment.generator.standard的新程序包并在其中定义一个名为StandardTranslatorBundle.java的新Java文件。 事实证明这是Speedment真正需要工作的唯一文件。 我们为其提供以下内容 StandardTranslatorBundle.java package com.speedment.generator.standard;import com.speedment.common.injector.InjectBundle;
import java.util.stream.Stream;public final class StandardTranslatorBundle implements InjectBundle {Overridepublic StreamClass? injectables() {return Stream.empty();}
} 接下来我们需要用我们自己的项目替换排除的工件以使插件永远不会意识到文件丢失。 我们返回到pom.xml文件并将我们自己的项目添加到speedment-maven-plugin的dependencies部分。 完整的pom文件如下所示 pom.xml ?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdcom.github.pyknic/groupIdartifactIdspeedment-general-purpose/artifactIdversion1.0.0-SNAPSHOT/versionpackagingjar/packagingpropertiesproject.build.sourceEncodingUTF-8/project.build.sourceEncodingmaven.compiler.source1.8/maven.compiler.sourcemaven.compiler.target1.8/maven.compiler.targetspeedment.version3.0.1/speedment.version/propertiesdependenciesdependencygroupIdcom.speedment/groupIdartifactIdruntime/artifactIdversion${speedment.version}/versiontypepom/type/dependency/dependenciesbuildpluginsplugingroupIdcom.speedment/groupIdartifactIdspeedment-maven-plugin/artifactIdversion${speedment.version}/versiondependenciesdependencygroupIdcom.speedment/groupIdartifactIdtool/artifactIdversion${speedment.version}/versiontypepom/typeexclusionsexclusiongroupIdcom.speedment.generator/groupIdartifactIdgenerator-standard/artifactId/exclusion/exclusions/dependencydependencygroupIdcom.github.pyknic/groupIdartifactIdspeedment-general-purpose/artifactIdversion1.0.0-SNAPSHOT/version/dependency dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion5.1.39/version/dependency/dependencies/plugin/plugins/build
/project 如果现在我们构建项目然后运行target speedmenttool我们应该能够毫无问题地启动图形用户界面。 如果我们连接到数据库然后按“ Generate”则什么也不会发生 我们已经成功地破解了Speedment使其无所作为 第3步将速度变成您想要的东西 现在当我们有了全新的干净的Speedment时就可以开始将其转变为我们想要的应用程序了。 我们仍然具有强大的用户界面可以在其中基于数据库模型配置代码生成。 我们有一个富有表现力的实用程序和帮助程序类库用于处理生成的代码。 最重要的是我们拥有一种用于以面向对象的方式分析数据库元数据的结构。 要了解有关如何编写自己的代码生成模板并将其挂钩到平台的更多信息 请参阅本文 。 您还应该查看Speedment GitHub页面以了解现有生成器我们刚刚禁用的生成器如何工作并可能会启发您如何构建自己的生成器。 直到下次继续入侵 翻译自: https://www.javacodegeeks.com/2016/11/hack-speedment-personal-code-generator.html动态代码生成 静态代码生成