idal 创建springboot 项目_手把手的SpringBoot教程,SpringBoot创建web项目(四)

在实际的开发过程中,我们需要前端页面向Java端提交请求,这些请求一般分为get方式和post方式,不管是哪一种方式,一般都会携带一些参数。这一节,我们来演示一下如何给Controller传递参数。

代码:

@RestController

@RequestMapping("hello")

public class HelloController {


public String hello(){

return "Hello Spring Boot";

}



@RequestMapping("login")

public String login(@RequestParam("username") String username){

return "用户名:" + username;

}

}
这边我们用到了@RequestParam注解。

然后,启动项目,在地址栏访问:http://localhost:8088/demo/login?username=jack

即可看到效果:

106a55ca54bb9cc022f07ebdb62f833c.png

如果我们参数后面什么都不写:

http://localhost:8088/demo/login?username=

那么返回就是空:

291a01a53fc9a068cbdbd58314ffff85.png

我们可以设置参数的默认值:

@RequestMapping("login")

public String login(@RequestParam(value="username",defaultValue="未知用户") String username){

return "用户名:" + username;

}

再次访问:http://localhost:8088/demo/login?username=

得:

a46b88b3dbe1f126ff863f783c8732fd.png

接下来,我们来演示如何在SpringBoot项目中连接数据库,并且自动创建一张表。

按照惯例,数据库我们依然使用mysql,至于什么是jpa呢?

jpa是sun推出的持久化规范(java persistens api),JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。JPA 的目标之一是制定一个可以由很多供应商实现的API,并且开发人员可以编码来实现该API,而不是使用私有供应商特有的API。

实现JPA规范的框架,比较出名的是hibernate。

现在,我们需要在pom文件中引入两个依赖:

<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-data-jpaartifactId>
dependency>

<dependency>
<groupId>mysqlgroupId>
<artifactId>mysql-connector-javaartifactId>
dependency>

分别为spring-data-jpq和mysql驱动。

Spring Data是一个用于简化数据库访问,并支持云服务的开源框架。其主要目标是使得对数据的访问变得方便快捷,并支持map-reduce框架和云计算数据服务。Spring Data 包含多个子项目,spring-data-jpq就是其中的一个。

修改yml文件:

server:
port: 8088
context-path: /demo
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/crud
username: root
password: 123456
jpa:
hibernate:
ddl-auto: create
show-sql: true

其中,设置ddl-auto: create的目的就是在项目启动的时候,就创建表。

接着,我们去新建一个JavaBean:

ec3503d1a21a64218f187dc4aac30ee7.png

代码:

package com.springboot.study.bean;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

@Entity
public class User {

@Id
@GeneratedValue
private Integer id;

private String username;
private String password;

//无参构造方法,这个必须要有,不然会报错
public User() {

}

public Integer getId() {
return id;
}

public void setId(Integer id) {
this.id = id;
}

public String getUsername() {
return username;
}

public void setUsername(String username) {
this.username = username;
}

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}




}

其中,主键ID设置为自增长。

然后,启动项目,发现数据库的表已经自动生成了。

e87fa53d21197cf1b2a2a668ac1cdcaf.png

e1a5c4305347860c150088122b6c445e.png

在上一节的yml文件中,我们设置 ddl-auto 为 create,这会导致每一次启动项目的时候,都会去数据库里面重新创建表。这不是我们希望看到的,一般在项目开发中,我们更愿意把这个配置设置为update,这样的话,启动项目时它会去检测,如果表已经存在并且里面是有数据的,即不会去重新建表了。

server:
port: 8088
context-path: /demo
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/crud
username: root
password: 123456
jpa:
hibernate:
ddl-auto: update
show-sql: true

我们需要使用spring-data-jpa来帮我们实现对用户表的增删改查,先去写一个接口,集成jpa:

a17cd38eda6657d2a2cdb0dc9940b134.png

85683e9174687ba2fbb1e302f52fff9d.png

package com.springboot.study.service;

import org.springframework.data.jpa.repository.JpaRepository;

import com.springboot.study.bean.User;
public interface UserService extends JpaRepository{

}

我们只需要写上类名和主键的类型,即可。

9e1c29487932689a30d58c5365fbf6c0.png

其他什么都不用写,就OK啦。

编写Controller:

e261dc5abe79ba2c2b6158ed8db1ccef.png

代码:

package com.springboot.study.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RestController;

import com.springboot.study.bean.User;
import com.springboot.study.service.UserService;

@RestController
public class UserController {

@Autowired
private UserService userService;

/**
* 获取所有的用户列表
* @return
*/
@RequestMapping("findAllUsers")
public ListfindAllUsers(){
return userService.findAll();
}

}

因为逻辑比较简单,我就直接给出一个例子了,启动项目,看结果。。

这次启动时间稍微长了一点:

ed0456591cf89f3d603034e71323b06b.png

浏览器输入:
http://localhost:8088/demo/findAllUsers

返回:

030dc54798a8219820ac1337d58682c1.png

nice!

SpringBoot果然好用,一句sql都没写,甚至实现方法都没写,我们就完成了功能。

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

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

相关文章

JavaOne 2012:Lambda之路

我最热切期待的JavaOne 2012演讲之一是Brian Goetz的“通往Lambda的道路”。 昨晚的技术主题演讲中的Lambda味道仅增加了预期。 这是在希尔顿广场A / B举行的&#xff0c;距离我上次在金门大桥A / B / C参加的演讲仅几步之遥。 我原本希望打包相对较大的Plaza A / B&#xff08…

沉浸式go-cache源码阅读!

大家好&#xff0c;我是豆小匠。 这期来阅读go-cache的源码&#xff0c;了解本地缓存的实现方式&#xff0c;同时掌握一些阅读源码的技巧~ 1. 源码获取 git clone https://github.com/patrickmn/go-cache.git用Goland打开可以看到真正实现功能的也就两个go文件&#xff0c;ca…

CoreAnimation 变换

CoreAnimation 变换 CoreAnimation 目录 博客园MakeDown支持不佳,如有需要请进GitHub 本片博客主要内容: 仿射变换 - CGAffineTransform3D变换 - CATransform3D仿射变换 - CGAffineTransform CGAffineTransform 是用于二维空间的旋转,缩放和平移的属性.首先展示一个简单的样例,…

20170907wdVBA_GetCellsContentToExcel

WORD 加载项 代码模板 Dim cmdBar As CommandBar, cmdBtn As CommandBarControl Const cmdBtnCap As String "批量提取操作步骤"Sub AutoExec()Call DelCmdBtnCall AddCmdBtnEnd Sub Sub AutoExit()Call DelCmdBtn End SubSub AddCmdBtn()Set cmdBar Application.C…

mysql 5.7 mirror_Centos7 Docker离线部署Mysql5.7

1 环境信息查看系统内核[rootlocalhost /]# cat /etc/redhat-releaseCentOS Linux release 7.5.1804 (Core)2 虚拟机拉取镜像此处资源获取在虚拟机中进行&#xff0c;完成后上传到服务器安装2.1 拉取mysql5.7镜像[rootlocalhost /]# docker pull mysql:5.72.2 导出镜像[rootloc…

Java中的简单REST客户端

如今&#xff0c;大多数用于与某些服务器通信的移动应用程序都使用REST服务。 这些服务也是与JavaScript或jQuery一起使用的常见做法。 现在&#xff0c;我知道在Java中为REST服务创建客户端的2种方法&#xff0c;在本文中&#xff0c;我将尝试演示这两种方法&#xff0c;希望它…

3.20 下午

阅读《艺术学概论》 戏剧冲突是戏剧的灵魂 冲突包括&#xff1a;人物性格的冲突、行为的冲突、 思想感情的冲突乃至心理状态的冲突等等 转载于:https://www.cnblogs.com/bgd140206110/p/6590005.html

华为root工具_华为Mate9解锁后无法ROOT 需要手动刷入Recovery怎么办【解决方法】...

很多朋友手机到手之后&#xff0c;都希望能够ROOT使用更多的系统功能。近日有网友向小编询问&#xff0c;为何华为Mate9解锁后无法ROOT&#xff0c;明明已经通过官方的解锁教程解锁的&#xff0c;但是之后使用“大师”等第三方刷机工具&#xff0c;无法ROOT。其实ROOT的关键就在…

JAX-WS入门

JAX-WS代表XML Web Services的Java API。 它是一种Java编程语言API&#xff0c;用于创建Web服务和使用XML进行通信的客户端。 这篇文章是JAX-WS的快速入门。 先决条件 GlassFish与Eclipse集成在一起 。 创建JAX-WS Web服务 1.在Eclipse中创建一个名为“ com.eviac.blog.jax…

canvas 图片反色

代码实例&#xff1a; <!DOCTYPE HTML> <html> <head><meta charset"utf-8"><title>图片反色</title><style type"text/css">body{ background:black;}#c1{ background:white;}</style><script type&q…

python中的文件父路径怎么表达_python中的文件父路径怎么表达_如何在Python中访问父目录...

所以我有一个朋友给我的Python脚本&#xff0c;但是我没有Python的经验。代码如下&#xff1a;from os import path, chdir, listdir, mkdir, getcwdfrom sys import argvfrom zipfile import ZipFilefrom time import sleep#Defines what extensions to look for within the f…

Maven的中央仓库地址

www.mvnrepository.com转载于:https://www.cnblogs.com/j-liu3323/p/6590435.html

Spring–添加AOP支持

我听到了一个有关一位高级&#xff08;且酬劳颇丰&#xff09;软件工程师的故事。 他的任务是记录他正在研究的项目中每个控制器中的每个方法。 工程师重写了所有控制器方法&#xff0c;因此使用如下代码&#xff1a; RequestMapping(method RequestMethod.GET)public String …

vscode python第三方库检测_VSCode中使用Pylint检查python代码

为什么使用lint在日常开发中&#xff0c;不同开发人员会写下不同风格的代码&#xff0c;导致代码可维护性变差&#xff0c;为了解决风格不一致问题&#xff0c;我们可以制定代码规范&#xff0c;让开发人员都遵守同样的规范编写代码。在开发过程中&#xff0c;部分代码存在质量…

Spring MVC-集成(Integration)-集成LOG4J示例(转载实践)

以下内容翻译自&#xff1a;https://www.tutorialspoint.com/springmvc/springmvc_log4j.htm 说明&#xff1a;示例基于Spring MVC 4.1.6。 以下示例说明如何使用Spring Web MVC框架来触发LOG4J。首先&#xff0c;让我们使用Eclipse IDE&#xff0c;并按照以下步骤使用Spring W…

NUMA架构和Java

是时候部署您的应用程序了&#xff0c;期待着采购最适合负载要求的硬件。 如今&#xff0c;具有40核或80核的包装盒非常普遍。 总体概念是更多的内核&#xff0c;更多的处理能力&#xff0c;更多的吞吐量。 但是我看到了一些相反的结果&#xff0c;表明小型的CPU密集型测试运行…

存储过程常用技巧

我们在进行pl/sql编程时打交道最多的就是存储过程了。存储过程的结构是非常的简单的&#xff0c;我们在这里除了学习存储过程的基本结构外&#xff0c;还会学习编写存储过程时相关的一些实用的知识。如&#xff1a;游标的处理&#xff0c;异常的处理&#xff0c;集合的选择等等…

vue是用a标签打开新页面_vue 在新窗口打开页面并设置不同的背景

开发一个新系统&#xff0c;前端用的vue&#xff0c;vue是单体应用&#xff0c;所有页面都在一个窗口里实现&#xff0c;但项目要求在点button链接后要新打开一个浏览器页面&#xff0c;解决方法如下&#xff1a;1. 给此button设置新事件 click"createdefect"提交缺陷…

卡尔曼滤波的推导

卡尔曼滤波的推导1 最小二乘法在一个线性系统中&#xff0c;若\(x\)为常量&#xff0c;是我们要估计的量&#xff0c;关于\(x\)的观测方程如下&#xff1a; \[ y Hx v \tag{1.1}\] \(H\)是观测矩阵&#xff08;或者说算符&#xff09;&#xff0c;\(v\)是噪音&#xff0c;\(y…

Java注释-保留

考虑一下Java批注&#xff1a; public interface AnAnnotaton {}带有此注释的类&#xff1a; AnAnnotaton class AnAnnotatedClass{}还有一个测试&#xff0c;检查类中是否存在此批注&#xff1a; import static org.hamcrest.MatcherAssert.assertThat; import static org.h…