后端Springboot框架搭建APi接口开发(第二章)

news/2025/1/15 14:02:13/

上一章我讲述了如何使用Mybatis操作数据库。这一章我讲述如何利用Sptring框架搭建API接口

第一节:封装SqlSessionFactory工具类

在API操作数据库大量调用SqlSessionFactory,因此应将SqlSessionFactory封装成工具类供方法随时调用

在文件结构中的util文件夹下创建一个MybaitisUtil.java文件

image-20230324172133878

文件结构:demo\src\main\java\com\example\demo\util\MybatisUtil.java

package com.example.demo.util;import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;import java.io.InputStream;public class MybatisUtil {private static SqlSessionFactory sqlSessionFactory = null;//    获取sqlSessionFactorystatic {try {String resource = "Mybatis-config.xml";InputStream resourceAsStream = Resources.getResourceAsStream(resource);sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);} catch (Exception e) {e.printStackTrace();}}//    sqlSession封装public static SqlSession sqlSession() {SqlSession sqlSession = null;if (sqlSessionFactory != null) {sqlSession = sqlSessionFactory.openSession();} else {try {System.out.println("程序错误!sqlSessionFactory数据无效");System.exit(0);} catch (Exception e) {e.printStackTrace();}}return sqlSession;}
}

第二节:封装json实体类

为了返回给前端的数据更加的好看、直观,因此我们可以将数据已json的格式返回给前端。

第一小节:创建APIResult实体类

在文件结构中的entity文件夹下创建一个APIResult文件,数据结构以success、data、message构成

类名数据类型说明
successboolean用于输出程序是否执行成功,输出格式为布尔值。成功为true,失败为false
dataobject用于数据获得的数据,如果没有数据就返回null
messageString用于存放输出的信息,如果没有信息就返回null

image-20230324180105767

文件结构:demo\src\main\java\com\example\demo\entity\APIResult.java

package com.example.demo.entity;import lombok.*;@Getter
@Setter
@ToString
@AllArgsConstructor
@NoArgsConstructor
public class APIResult {private Boolean success;private Object data;private String message;
}

第二小节:封装APIResult工具类

现在我们写好了APIResult实体类,我们还要写一个对应的工具类调用,与SqlSessionFactory工具类类似

在文件结构中的util文件夹下创建一个APIResultUtil.java文件

image-20230324180521190

文件结构:demo\src\main\java\com\example\demo\util\APIResultUtil.java

package com.example.demo.util;import com.example.demo.entity.APIResult;public class APIResultUtil {public static APIResult apiResult(Boolean success, String message, Object data) {APIResult apiResult = new APIResult();apiResult.setSuccess(success);apiResult.setMessage(message);apiResult.setData(data);return apiResult;}
}

第三节:编写APi接口方法

现在我们封装的SqlSessionFactory和APIResult工具类已经配置完成了,我们现在就可以写APi接口的方法了。

APi接口调用封装的SqlSessionFactory方法,然后通过SqlSessionFactory执行提前编写好的查询SQL语句,获取成功后以Json输出的格式返回给前端。

在文件结构中的controller文件夹下创建一个UserApi.java文件

image-20230327172819552

文件结构:demo\src\main\java\com\example\demo\controller\UserApi.java

package com.example.demo.controller;import com.example.demo.entity.user;
import com.example.demo.mapper.usermapper;
import com.example.demo.util.APIResultUtil;
import com.example.demo.util.MybatisUtil;
import org.apache.ibatis.session.SqlSession;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.List;@RestController
@RequestMapping("/api")public class UserApi {@RequestMapping("/GetUserList")public Object GetUserList() {try {SqlSession sqlSession = MybatisUtil.sqlSession();usermapper mapper = sqlSession.getMapper(usermapper.class);List<user> users = mapper.GetUserList();sqlSession.close();if (users != null) {return APIResultUtil.apiResult(true, "获取成功", users);} else {return APIResultUtil.apiResult(true, "无任何用户数据", null);}} catch (Exception e) {System.out.println("程序错误" + e);return APIResultUtil.apiResult(false, "程序错误", null);}}
}

第四节:启动Springboot主启动器

现在APi接口也编写完成了。现在只需要找到DemoApplication.java的启动类就可以将Stringboot跑起来了。

文件结构:demo\src\main\java\com\example\demo\DemoApplication.java

image-20230327173342645

image-20230327173403027

在控制台弹出了这些信息,并且没有结束进程。这表示就成功运行起来了

image-20230327173438767

第五节:测试接口

测试接口我推荐使用ApiPost软件

新建一个接口,在地址栏填入:http://localhost:8080/api/GetUserList

其中的api与GetUsetList都是在UserApi定义的。

image-20230327175329753

下一章讲解APi实现数据库增删改查


http://www.ppmy.cn/news/35763.html

相关文章

编译安装redis实验文档

一、什么是Redis Redis是一种主流的非关系型数据库&#xff0c;是完全开源的&#xff0c;遵守 BSD 协议&#xff0c;是一个高性能的 key-value 数据库。它支持数据的持久化&#xff0c;可以将内存中的数据保存在磁盘中&#xff0c;重启的时候可以再次加载进行使用。Redis不仅仅…

node_fs文件系统模块

1. 写入内容到文本文件里 Node.js 文件系统&#xff08;fs 模块&#xff09;模块中的方法均有异步和同步版本&#xff0c;例如读取文件内容的函数有异步的 fs.readFile() 和同步的 fs.readFileSync()。 异步的方法函数最后一个参数为回调函数&#xff0c;回调函数的第一个参数包…

VS Code 将推出更多 AI 功能给 Java 开发者

大家好&#xff0c;欢迎来到我们的二月更新&#xff01;我们将为您带来与 JUnit 5 并行测试相关的新功能以及用于 Spring Boot Dashboard 的过滤功能。另外&#xff0c;OpenAI 和 ChatGPT 是最近的热点&#xff0c;所以在 GitHub Copilot 方面也有一些令人激动的消息&#xff0…

Vue3通透教程【八】获取DOM、操作组件

文章目录 🌟 写在前面🌟 Vue2 ref 的使用🌟 Vue3获取DOM🌟 Vue3操作组件🌟 写在最后🌟 写在前面 专栏介绍: 凉哥作为 Vue 的忠实 粉丝输出过大量的 Vue 文章,应粉丝要求开始更新 Vue3 的相关技术文章,Vue 框架目前的地位大家应该都晓得,所谓三大框架使用人数最…

「解析」牛客网-华为机考企业真题 21-40

又是一年春招时&#xff0c;有幸收到华为自动驾驶算法岗&#xff0c;之前刷题不多&#xff0c;在此汇总下牛客网的真题&#xff0c;主要采用Python编写&#xff0c;个人觉得语言只是实现工具而已&#xff0c;并不是很关键&#xff0c;Python简洁易懂&#xff0c;更加适合算法工…

GPS时间序列分析---剔除跳跃点,拟合时间序列

通常利用GPS时间序列进行数据分析时&#xff0c;会遇到大地震的发生&#xff0c;这个时候会导致GPS的观测结果出现很大的跳跃值&#xff0c;这对后续的数据处理和分析带来了困难。这里分享一个最近了解的&#xff0c;可以用于处理这一问题的工具包---TSAnalyzer。下面主要介绍该…

javascript常用的一些公共方法

获取当前时间 获取当前时间并补零的 JavaScript 方法: function getCurrentDateTime() {const now new Date();let year now.getFullYear();let month now.getMonth() 1;let day now.getDate();let hours now.getHours();let minutes now.getMinutes();let seconds n…

面试--每日一经

操作系统 死锁 死锁&#xff1a;是指两个或两个以上的进程在执行过程中&#xff0c;由于竞争资源或者由于彼此通信而造成的一种阻塞的现象&#xff0c;若无外力作用&#xff0c;它们都将无法推进下去。   死锁的四个必要条件 互斥条件&#xff1a;一个资源每次只能被一个进…