使用Speedment和Spring创建REST API

随着Spring Boot的第4版发布,为Web开发企业应用程序变得非常容易。 代表开发人员仍然需要大量时间的事情是,例如在Hibernate中对现有数据库进行建模,以获取数据的面向对象的视图。 在本教程中,我们将探索如何与开源一起使用开源工具Speedment与Spring一起生成实体,管理器和控制器,从而使您可以更快地开始开发。

关于速度

Speedment是一个开放源代码Java工具包,使开发人员可以快速生成与数据库进行通信所需的所有粘合。 使用图形工具,您可以在几秒钟内连接到数据库并生成Java源。 与Spring一样,Speedment以模块化的方式构建,因此易于学习和仅使用您感兴趣的部分。在本文中,除了标准文件之外,我们还将使用Speedment插件来生成Spring控制器。

步骤1:创建一个新的Spring Boot项目

Spring Boot由许多模板组成,可以轻松地开始使用新应用程序。 我们将使用一个称为“ spring-boot-starter-web”的框架来设置我们的Web应用程序。

首先创建一个新的Maven项目,然后将以下内容添加到“ pom.xml”文件中:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.4.1.RELEASE</version></parent><groupId>com.github.pyknic</groupId><artifactId>speedment-spring-example</artifactId><version>1.0.0-SNAPSHOT</version><packaging>jar</packaging><properties><java.version>1.8</java.version><speedment.version>3.0.1</speedment.version><mysql.version>5.1.39</mysql.version></properties><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin><plugin><groupId>com.speedment</groupId><artifactId>speedment-maven-plugin</artifactId><version>${speedment.version}</version><dependencies><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>${mysql.version}</version></dependency><dependency><groupId>com.speedment.plugins</groupId><artifactId>spring-generator</artifactId><version>${speedment.version}</version></dependency></dependencies><configuration><components>                       
<component>com.speedment.plugins.spring.SpringGeneratorBundle</component></components></configuration></plugin></plugins></build><dependencies><dependency><groupId>com.speedment</groupId><artifactId>runtime</artifactId><version>${speedment.version}</version><type>pom</type></dependency><dependency><groupId>com.speedment.plugins</groupId><artifactId>spring-generator</artifactId><version>${speedment.version}</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>${mysql.version}</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies>
</project>

这会将您的项目配置为Spring Boot应用程序,并告诉它将Springment与Spring Generator插件一起使用。

步骤2:使用速度生成源

修改pom文件后,IDE中将提供许多新的Maven目标。 速度可以图形方式使用,也可以从命令行使用。 在本教程中,我们将使用UI。 要启动Speedment Tool,请在项目上执行以下Maven目标:

mvn speedment:tool

将打开一个对话框,使您可以连接到数据库。 连接后,您将在左侧看到一个窗口,其中概述了数据库,而在中心则显示了各种配置选项。 对于本教程,默认设置就足够了,因此只需在工具栏中按“生成”即可。

如果切换回IDE,您将看到新生成的源。 您会注意到每个类都有两个副本,其中一个带有“ Generated”前缀。 这样做的原因是,如果您需要在某个时候重新生成源代码,则允许进行修改而没有覆盖更改的风险。 具有“已生成”前缀的文件将始终被覆盖,而没有前缀的文件将仅被创建一次。

步骤3:创建一个主文件

Speedment已经生成了完整的数据库面向对象模型,但是我们仍然需要为应用程序创建一个入口点。 我们将其放在主程序包中,并将其命名为Main.java。

Main.java

package com.github.pyknic.spring;import com.speedment.common.logger.Level;
import com.speedment.common.logger.LoggerManager;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class Main {public static void main(String... args) {SpringApplication.run(Main.class, args);}
}

如果我们启动应用程序,Spring Boot将为数据库中的每个表设置一个独立的Web应用程序,并为其生成一个控制器。 我们可以通过在浏览器中转到以下路径来进行尝试:

http://localhost:8080/hare/

现在将返回数据库中“兔子”表的JSON表示形式。

[{"id":1, "name":"Harry", "color":"Gray", "age":3},{"id":2, "name":"Henrietta", "color":"White", "age":2},{"id":3, "name":"Henry", "color":"Black", "age":9}
]

注意#1:如果您遇到一个异常,说明此内容…

There was an unexpected error (type=Internal Server Error, status=500). 
Could not write content: No value present (through reference chain: 
java.util.ArrayList[0]...

…这可能意味着您的数据库中有Speedment选择实现为OptionalLong,OptionalInt等的可空列。您可以通过在Speedment Tool中将“可空实现”字段设置为WRAPPER而不是那些列的OPTIONAL来关闭此功能。

注意#2:如果您在这种样式中遇到异常,则…

java.sql.SQLException: Access denied for user 'root'@'localhost' 
(using password: YES)

…您将需要在项目的根目录中创建一个application.properties文件,并添加数据库的身份验证详细信息。

application.properties

jdbc.username=root
jdbc.password=password

摘要

在本文中,我们使用了Speedment和Spring Generator插件来自动创建完整的Spring Boot Application。 Speedment已生成用于与数据库通信的实体,管理器和REST控制器。 如果您想了解有关Speedment的更多信息以及如何控制生成的代码,请在Speedment GitHub页面上查看许多示例!

翻译自: https://www.javacodegeeks.com/2016/12/creating-rest-api-speedment-spring.html

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

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

相关文章

Phpstorm界面不停的indexing,不停的闪烁

选择 File->Invalidate Caches / Restart...->Invalidate and Restart&#xff0c;就行了&#xff01;转载于:https://www.cnblogs.com/php-no-2/p/9848606.html

Matlab 集群计算平台搭建

家庭云服务器高阶应用&#xff1a;通过Matlab分布式计算来演示所谓的“家庭云计算”&#xff08;非云储存&#xff09;(转)Matlab是强大的计算软件&#xff0c;这不需要过多介绍了&#xff0c;大到航天航空领域&#xff0c;小到计算方程式&#xff0c;Matlab无处不在。 像是这种…

c打印无符号整数_C语言基础知识:printf的输出格式,C/C++语言编程讲解

C语言基础知识&#xff1a;printf的输出格式printf()函数是格式输出函数&#xff0c;请求printf()打印变量的指令取决与变量的类型&#xff0e;例如&#xff0c;在打印整数是使用&#xff05;d符号&#xff0c;在打印字符是用&#xff05;c 符号&#xff0e;这些符号被称为转换…

CGI简介

原始的HTML語言是設計用來展現靜態的資料&#xff0c;它讓人使用一種簡單的語法展現出豐富的多媒體資料&#xff0c;就像廣告看板一樣。 由於WWW具有相當大的商業用途&#xff0c;因此推出後大受歡迎。可是單純的靜態展示好像缺少了什麼? 如果使用者需要的資料具有時效性&…

数据分析——pyecharts

导入类库 1 from pyecharts import Pie, Bar, Gauge, EffectScatter, WordCloud, Map, Grid, Line, Timeline 2 import random make_point&#xff1a;标注&#xff0c;类似于matplotlib的text is_stack&#xff1a;堆叠&#xff0c;将同一图表中的不同图像堆叠显示 is_label_s…

第三方软件要使用QQ邮箱进行发邮件相关设置

1、要在QQ邮箱的设置界面进行相关设置。 开启相应的服务器&#xff0c;然后获得相应的授权密码即可。 相关参考&#xff1a; http://service.mail.qq.com/cgi-bin/help?subtype1&&id28&&no1001256 2、对相应的服务器和接口进行设置 相关参考&#xff1a;…

CGI相关介绍

一、CGI 简介CGI 是 Common Gateway Interface 的 简 称 。 其 主 要 的 功 能 是 在WWW 环 境 下 &#xff0c; 藉 由 从 客 户 端 传 递 一 些 讯 息 给 WWW Server &#xff0c; 再由 WWW Server 去 启 动 所 指 定 的 程 式 码 来 完 成 特 定 的 工 作 。所 以 更 明 确 的…

mapreduce 聚合_MapReduce:处理数据密集型文本处理–局部聚合第二部分

mapreduce 聚合这篇文章继续进行有关使用MapReduce进行数据密集型处理的书中实现算法的系列文章。 第一部分可以在这里找到。 在上一篇文章中&#xff0c;我们讨论了使用本地聚合技术来减少通过网络进行混洗和传输的数据量的方法。 减少传输的数据量是提高MapReduce作业效率的主…

最常出现的字符串 Most Common Word

2018-10-26 00:32:05 问题描述&#xff1a; 问题求解&#xff1a; 方法一、Trie 最长出现的字符串&#xff0c;最容易想到的解法就是Trie树了&#xff0c;于是首先使用Trie树进行了实现&#xff0c;代码量有点大&#xff0c;当然了是可以A掉的&#xff0c;只是对于这种Easy的题…

docker启动odoo提示module没有安装_Ubuntu20.04通过docker安装微信

到目前为止&#xff0c;在ubuntu20.04上使用wechat最简单的方式不是wine&#xff0c;而是用docker。今天就传授大家一个一定可以使用的docker安装的wine版本。首先&#xff0c;安装一下docker&#xff1a;sudo apt install docker.io sudo systemctl enable --now dockersudo s…

mysql如何在一个表中插入数据的同时,更新另一个表的数据?

三种方案,你看看哪个比较适合你1,适用于学生: 写两个方法,一个新增一个更新,在新增完了以后马上去查询一下,按主键倒叙排列,取到最新插入的id,前提主键是自增的且不是uuid,然后把查到的主键返回出去作为形参让更新方法接收到,然后更新即可.2,适用于ssh框架: 写两个事务,事务的传…

Python Web初学解惑之 WSGI、flup、fastcgi、web.py的关系

首先声明这篇文章 是我从 豆瓣 上面看到的。 原文地址 http://www.douban.com/note/13508388/?start0&postok#last 看我之后 豁然开朗&#xff0c;对Web的理解有加深了一层&#xff0c;在此再感谢一下文章的作者。写这篇文章 &#xff1a;一 写下 自己的理解&#xff1…

继承Javadoc方法注释

尽管用于javadoc工具的JDK工具和实用程序页面通过实现和继承方法来描述Javadoc方法注释重用的规则&#xff0c;但是当实际上不需要使用{inheritDoc}时&#xff0c;很容易不必要地显式描述注释继承&#xff0c;因为会使用相同的注释隐式继承。 Java 8 javadoc工具页面在“ 方法公…

C++之手写strlen函数

代码&#xff1a; int strlen(const char *str){ assert(str!NULL); intlen0; while((*str)!\0) len;return len; } 这个函数实现起来较为简单&#xff0c;注意字符指针的有效性检查。 可参考&#xff1a;strlen、strcpy、strcat等字符串处理函数的实现 转载于:https://www.cnb…

mysql or优化_MySQL 语句优化

官方文档放这里&#xff0c;有什么代码先到官方文档查询&#xff1a;MySQL 8.0 Reference Manual :: 8 Optimization​dev.mysql.com优化涉及多个级别的配置&#xff0c;调整和测量性能。 根据工作角色&#xff08;开发人员&#xff0c;DBA或两者的组合&#xff09;&#xff0c…

浅谈 MySQL 的存储引擎(表类型)

什么是MySql数据库 通常意义上&#xff0c;数据库也就是数据的集合&#xff0c;具体到计算机上数据库可以是存储器上一些文件的集合或者一些内存数据的集合。 我们通常说的MySql数据库&#xff0c;sql server数据库等等其实是数据库管理系统&#xff0c;它们可以存储数据&#…

Ubuntu如何搭建Django与Flup和Nginx环境?

Ubuntu系统越来越多的用户开始使用&#xff0c;本文介绍的是搭建DjangoFlupNginx环境的过程。 首先我们必须明白这这3者在该环境下发挥的作用。 1.nginx&#xff1a;("enginex")是一个高性能的HTTP和反向代理服务器&#xff0c;作用和apache的类似。它可以处理一些静…

洛谷 1137 旅行计划

【题解】 拓扑排序DP即可。 1 #include<cstdio>2 #include<cstring>3 #include<algorithm>4 #include<vector>5 #define LL long long6 #define rg register7 #define N 2000108 using namespace std;9 int n,m,front,rear,q[N],f[N],in[N]; 10 bool v…

NOT IN、JOIN、IS NULL、NOT EXISTS效率对比

语句一&#xff1a;select count(*) from A where A.a not in (select a from B) 语句二&#xff1a;select count(*) from A left join B on A.a B.a where B.a is null 语句三&#xff1a;select count(*) from A where not exists (select a from B where A.a B.a) 知道以…

python ssl_Python3 ssl模块不可用的问题

编译安装完Python3之后&#xff0c;使用pip来安装python库&#xff0c;发现了如下报错&#xff1a; $ pip install numpy pipis configured with locations that require TLS/SSL, however the ssl module in Python isnot available. Collecting numpy Retrying (Retry(total4…