Springboot快速搭建Web API项目

内容概述

SpringBoot最常见得用途就是web api项目。

本文介绍使用自动配置功能,通过最简洁的pom依赖,快速搭建一个示例项目。

实现的功能为:接收http请求并返回json格式的数据。

一、配置pom.xml依赖

1.引入springweb依赖

		<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>

2.引入数据库依赖(此处我们用的是SQL Server)

		<!-- SQL server--><dependency><groupId>com.microsoft.sqlserver</groupId><artifactId>mssql-jdbc</artifactId><version>7.4.1.jre8</version></dependency>

二、配置服务端口和数据库

1.在application.properties中添加:

# 配置端口
server.port = 8088# 配置SQLServer数据库连接
spring.datasource.url = jdbc:sqlserver://localhost;DatabaseName=数据库名称
spring.datasource.username = ***
spring.datasource.password = ***
spring.datasource.driver-class-name = com.microsoft.sqlserver.jdbc.SQLServerDriver

三、添加API接口

1.在JAVA目录下添加Controller、Service两个java类
在这里插入图片描述

2.UserController.java(通常在这里编写接口信息)

import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import java.util.Map;/*** Created by *** on 2023/8/31.*/
@RestController
public class UserController {@AutowiredUserService userService;// 用户查询@CrossOrigin@PostMapping("/user/info")public Result infoUser(){return userService.InfoUser();}// 用户添加@CrossOrigin@PostMapping("/user/add")public Result addUser(@RequestBody Map<String,String> map){return userService.AddUser(map.get("pid"), map.get("name"), map.get("level"));}// 用户编辑@CrossOrigin@PostMapping("/user/edit")public Result editUser(@RequestBody Map<String,String> map){return userService.EditUser(map.get("id"), map.get("name"));}// 用户删除@CrossOrigin@PostMapping("/user/delete")public Result deleteUser(@RequestBody Map<String,String> map){return userService.DeleteUser(map.get("id"));}
}

3.UserService.java (通常在这里编写SQL查询方法)

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;import java.util.List;
import java.util.Map;/*** Created by *** on 2023/8/31.*/
@Service
public class UserService {@AutowiredJdbcTemplate jdbcTemplate;/*** 用户查询* @return*/@Transactionalpublic Result InfoUser(){try {String SQL = "SELECT * FROM 表名称 ";List<Map<String, Object>> list = jdbcTemplate.queryForList(SQL);return Result.ok("查询成功",list);} catch (Exception e) {e.printStackTrace();return Result.error("查询失败");}}/*** 用户添加* @param pid* @param name* @return*/@Transactionalpublic Result AddUser(String pid, String name, String level){try {Map<String, Object> count = jdbcTemplate.queryForMap("SELECT MAX(ID) FROM 用户信息数据表");int id =  Integer.parseInt(count.get("").toString()) + 1;String SQL = "INSERT INTO 用户信息数据表 VALUES (?, ?, ?, ?, NULL, NULL)";int res = jdbcTemplate.update(SQL, id, pid, name, level);System.out.println("添加id:" + id);return Result.ok("添加成功");} catch (Exception e) {e.printStackTrace();return Result.error("添加失败");}}/*** 用户编辑* @param id* @param name* @return*/@Transactionalpublic Result EditUser(String id, String name){try {String SQL = "UPDATE 用户信息数据表 SET Name=? WHERE ID=?";int res = jdbcTemplate.update(SQL, name, id);System.out.println("编辑id:" + id);return Result.ok("编辑成功");} catch (Exception e) {e.printStackTrace();return Result.error("编辑失败");}}/*** 用户删除* @param id* @return*/@Transactionalpublic Result DeleteUser(String id){try {String SQL = "DELETE FROM 用户信息数据表 WHERE ID=?";int res = jdbcTemplate.update(SQL, id);System.out.println("删除id:" + id);return Result.ok("删除成功");} catch (Exception e) {e.printStackTrace();return Result.error("删除失败");}}
}

4.Result .java (信息返回通用类)


/*** Created by *** on 2023/8/31.*/
public class Result {private Integer code;private String msg;private Object result;public static Result ok(String msg, Object result) {return new Result(200, msg, result);}public static Result ok(String msg) {return new Result(200, msg, null);}public static Result error(String msg, Object result) {return new Result(500, msg, result);}public static Result error(String msg) {return new Result(500, msg, null);}private Result() {}private Result(Integer code, String msg, Object result) {this.code = code;this.msg = msg;this.result = result;}public Integer getCode() {return code;}public Object getResult() {return result;}public String getMsg() {return msg;}public void setCode(Integer code) {this.code = code;}public void setResult(Object result) {this.result = result;}public void setMsg(String msg) {this.msg = msg;}
}

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

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

相关文章

为什么人与人之间的差距这么大?

前言 首先要明确的是&#xff0c;与身边的人相比&#xff0c;每个人的生活情况和经历都是不同的&#xff0c;有差距是非常正常的。因此&#xff0c;不需要过度关注自己与他人之间的差距。个人感受 在生活中&#xff0c;工作中&#xff0c;学习中&#xff0c;不免遇上一些各方…

【JavaScript精通之道】掌握数据遍历:解锁现代化遍历方法,提升开发效率!

​ &#x1f3ac; 岸边的风&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! ​ 目录 &#x1f4da; 前言 &#x1f4d8; 1. reduce方法 &#x1f4d8; 2. forEach方法 &#x1f4d8; 3. map方法…

Flutter实现StackView

1.让界面之间可以嵌套且执行动画。 2.界面的添加遵循先进后出原则。 3.需要使用AnimateView&#xff0c;请看我上一篇博客。 演示&#xff1a; 代码&#xff1a; Stack: import package:flutter/cupertino.dart;///栈&#xff0c;先进后出 class KqWidgetStack {final Lis…

MyEclipse 中的某一个项目下,ctrl+鼠标左键失效,定位不到源代码位置。

在学习或者工作中不可避免的需要使用myeclipse&#xff0c;使用过程中或许会遇到这种问题: myeclipse中的某一个项目下&#xff0c;ctrl鼠标左键失效&#xff0c;定位不到源代码位置。 解决办法1 声明&#xff1a;我使用的myeclipse版本为 MyEclipse Professional 2014&a…

13. 罗马数字转整数

链接&#xff1a; 13. 罗马数字转整数 题解&#xff1a; class Solution { public:int romanToInt(string s) {int result 0;if (s.size() < 0) {return result;}std::unordered_map<char, int> table{{I, 1},{V, 5},{X, 10},{L, 50},{C, 100},{D, 500},{M, 1000}…

Unity3D下如何采集camera场景数据并推送RTMP服务?

Unity3D使用场景 Unity3D是非常流行的游戏开发引擎&#xff0c;可以创建各种类型的3D和2D游戏或其他互动应用程序。常见使用场景如下&#xff1a; 游戏开发&#xff1a;Unity3D是一个广泛用于游戏开发的环境&#xff0c;适用于创建各种类型的游戏&#xff0c;包括动作游戏、角…

C语言每日一练--Day(16)

本专栏为c语言练习专栏&#xff0c;适合刚刚学完c语言的初学者。本专栏每天会不定时更新&#xff0c;通过每天练习&#xff0c;进一步对c语言的重难点知识进行更深入的学习。 今日练习题关键字&#xff1a;寻找奇数 峰值 二分查找 &#x1f493;博主csdn个人主页&#xff1a;小…

go学习part21 Redis和Go(2)

1.三方库安装 309_尚硅谷_Go连接到Redis_哔哩哔哩_bilibili 借鉴&#xff1a; Golang 安装 Redis_go fiber 安装redis_柒柒伍贰玖。的博客-CSDN博客 三方redis库已经迁移到以下网址&#xff0c;go get github.com/gomodule/redigo/redis gomodule/redigo: Go client for Red…

UE5打完包后,启动程序不能全屏

最近看到ue5的打包程序后不能默认自动全屏&#xff0c;效果如下&#xff0c;发现并不是全屏的&#xff0c;而且就算点击放大也不是全屏 解决办法&#xff1a;设置如下之后在打包就可以了 但是会一直打印错误的日志&#xff0c;不过这个不影响使用

【IIS搭建网站】本地电脑做服务器搭建web站点并公网访问「内网穿透」

1.前言 在网上各种教程和介绍中&#xff0c;搭建网页都会借助各种软件的帮助&#xff0c;比如网页运行的Apache和Nginx、数据库软件MySQL和MSSQL之类&#xff0c;为方便用户使用&#xff0c;还出现了XAMPP、PHPStudy、宝塔面板等等一系列集成服务&#xff0c;都是为了方便我们…

weblogic/CVE-2018-2894文件上传漏洞复现

启动docker环境 查看帮助文档 环境启动后&#xff0c;访问http://your-ip:7001/console&#xff0c;即可看到后台登录页面。 执行docker-compose logs | grep password可查看管理员密码&#xff0c;管理员用户名为weblogic&#xff0c;密码为lFVAJ89F 登录后台页面&#xff0c;…

在 Python 中构建卷积神经网络; 从 0 到 9 的手绘数字的灰度图像预测数字

一、说明 为了预测从0到9的数字&#xff0c;我选择了一个基于著名的Kaggle的MNIST数据集的数据集。数据集包含从 <0> 到 <9> 的手绘图数字的灰度图像。在本文中&#xff0c;我将根据像素数据&#xff08;即数值数据&#xff09;和卷积神经网络预测数字。 二、 卷积…