springboot+vue3支付宝接口案例-第二节-准备后端数据接口

news2024/11/16 13:28:35

springboot+vue3支付宝接口案例-第二节-准备后端数据接口!今天经过2个小时的折腾。准备好了我们这次测试支付宝线上支付接口的后端业务数据接口。下面为大家分享一下,期间发生遇到了一些弯路。


首先,我们本次后端接口使用的持久层框架是JPA。这是一个较为传统的老掉牙的持久层技术了。但是,在配置测试接口过程中依然遇到了一些错误和弯路,给大家一一列举出来。


第一个要点:实体类的封装和映射配置。

如图所示,红色的区域,都是大家需要注意的地方。

顶部@Entity,是jpa框架官方要求的。这个东西,就是一个标记符号。告诉框架,我这个是一个数据对象。

第二个@Table()里面的name属性,要写好。我的数据库表名字是tb_goods。所以要写的正确才行。如果名字是goods。和实体类名字一样。name属性可以不写,默认的情况,就是表名和实体类名字一模一样。

第三个主键,要配置好参数。第一个参数,我特意查了一下资料,@javax.persistence.Id.这个注解,是jpa官方要求的东西。少不了它。少了就报错。

第四个,当你的数据库表的字段名字和实体类的属性名字不一样,要加上name属性。写清楚。

我用红色给大家圈出来了。

如图,我的表内字段名字是带下划线的。我的实体类属性名字是不带的。所以name属性就不能忽略了。


package com.example.demo.bean;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Result<T> {
    private Integer code;
    private String msg;
    private T data;

}

 其次,为了给前端传json对象时方便,我封装了一个方便业务传输的回传实体类。里面用了一个泛型参数。这样它就可以实现多方面的复用了。


package com.example.demo.controller;

import com.example.demo.bean.Goods;
import com.example.demo.bean.Result;
import com.example.demo.service.IGoodsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.ArrayList;
import java.util.List;

@RestController
@RequestMapping("/goods")
public class GoodsController {
    @Autowired
    private IGoodsService goodsService;

    @GetMapping("/alllist")
    public Result<List<Goods>> getAllGodds(){
        Result<List<Goods>> result = new Result<List<Goods>>();
        List<Goods> allGoodsList = goodsService.getAllGoos();
        if(allGoodsList.size()>0){
            result.setCode(200);
            result.setMsg("查询产品信息列表成功");
            result.setData(allGoodsList);
            return result;
        }else{
            result.setCode(400);
            result.setMsg("查询失败,请稍后再试");
            return  result;
        }


    }
}

这个是控制器的代码,里面写了一个获取产品列表的接口。毕竟简单。不多介绍了。


package com.example.demo.service;

import com.example.demo.bean.Goods;

import java.util.ArrayList;
import java.util.List;

public interface IGoodsService {
    //获取所有的产品
    public List<Goods> getAllGoos();

    //根据id查询某一个产品信息
    public Goods getOneGoodsById(Integer id);

    //删除指定id的产品
    public void deleteOneGoodsById(Integer id);

    //更新指定id的产品
    public void updateOneGoodsById(Integer id);

    //新增一个产品
    public void addOneGoods(Goods goods);

}

这个是产品对象的业务层的接口代码。


package com.example.demo.service.impl;

import com.example.demo.bean.Goods;
import com.example.demo.mapper.GoodsMapper;
import com.example.demo.service.IGoodsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;
@Service
public class GoodsService implements IGoodsService {
    @Autowired
    private GoodsMapper goodsMapper;
    @Override
    public List<Goods> getAllGoos() {
        return goodsMapper.findAll();
    }

    @Override
    public Goods getOneGoodsById(Integer id) {
        return null;
    }

    @Override
    public void deleteOneGoodsById(Integer id) {

    }

    @Override
    public void updateOneGoodsById(Integer id) {

    }

    @Override
    public void addOneGoods(Goods goods) {

    }
}

这个是产品的业务层的实现类的代码。里面用了一个注入。注入一个来自持久层的对象。


package com.example.demo.mapper;

import com.example.demo.bean.Goods;
import org.springframework.data.jpa.repository.JpaRepository;

public interface GoodsMapper extends JpaRepository<Goods,Integer> {
}

持久层代码,因为我们这次不涉及到特别复杂的业务逻辑,就是简单的展示。所以,仅需继承框架本身的接口就行了。框架本身会提供一些基础的方法供给我们使用的。


如图,是postman接口调试软件里测试接口调用反馈数据成功了。说明我的数据库查询,反馈给前端页面的json格式的数据类型。成功了。

下一个小节,我们分享一下,vue3前端的页面代码。

 

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

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

相关文章

【复现】广联达-linkworks SQL注入漏洞_31

目录 一.概述 二 .漏洞影响 三.漏洞复现 1. 漏洞一&#xff1a; 四.修复建议&#xff1a; 五. 搜索语法&#xff1a; 六.免责声明 一.概述 LinkWorks是梦龙科技根据企业信息化的多样性、灵活性和复杂性&#xff0c;结合多年从事项目管理、办公管理、事务处理等方面的经验…

sql注入的学习

1.首先我们应该确定sql注入的类型 利用id1 and 11 和id1 and 12 判断是数字类型注入还是字符型注入&#xff0c;如果两者都可以正常显示界面&#xff0c;则为字符型注入&#xff0c;否则是数字型 两个都正常显示&#xff0c;所以为字符型注入&#xff08;也可以使用id2-1&…

浏览器——HTTP缓存机制与webpack打包优化

文章目录 概要强缓存定义开启 关闭强缓存协商缓存工作机制通过Last-Modified If-Modified-Since通过ETag If-None-Match 不使用缓存前端利用缓存机制&#xff0c;修改打包方案webpack 打包webpack 打包名称优化webpack 默认的hash 值webapck其他hash 类型配置webpack打包 web…

Mysql运维篇(三) MySQL备份与恢复

一路走来&#xff0c;所有遇到的人&#xff0c;帮助过我的、伤害过我的都是朋友&#xff0c;没有一个是敌人。如有侵权&#xff0c;请留言&#xff0c;我及时删除&#xff01; 一、物理备份与逻辑备份 1、物理备份&#xff1a;备份数据文件&#xff0c;转储数据库物理文件到某…

isctf---misc

你说爱我&#xff1f;尊嘟假嘟 转换为ook编码 def convert_string(input_str):# 定义转换映射关系mapping {"你说爱我": "Ook.","尊嘟": "Ook!","假嘟": "Ook?"}# 遍历字符串&#xff0c;进行转换for key, va…

谷歌seo内容营销怎么做?

谷歌SEO内容营销就像是在为两个观众准备一场表演&#xff0c;一边是用户&#xff0c;一边则是谷歌搜索引擎&#xff0c;那么所谓的内容营销&#xff0c;你自然需要知道你的观众想看什么&#xff0c;这就是关键词研究&#xff0c;帮你了解用户在搜索什么&#xff0c;然后&#x…

什么是NAT?NAT类型有哪些?

晚上好&#xff0c;我的网工朋友。NAT是一种地址转换技术&#xff0c;它可以将IP数据报文头中的IP地址转换为另一个IP地址&#xff0c;并通过转换端口号达到地址重用的目的。 在大多数网络环境中&#xff0c;我们都需要通过 NAT 来访问 Internet。 NAT作为一种缓解IPv4公网地址…

数据预处理:纠偏

纠偏 1、偏态分布2、什么是纠偏3、数据纠偏 1、偏态分布 频数分布有正态分布和偏态分布之分。正态分布是指多数频数集中在中央位置&#xff0c;两端的频数分布大致对称 偏态分布是指频数分布不对称&#xff0c;集中位置偏向一侧。若集中位置偏向数值小的一侧&#xff0c;称为正…

航空MRO行业研究:2027年全球市场将达1200亿美元

随着全球航空运输业的不断发展&#xff0c;越来越多的航空器进入了使用年限&#xff0c;需要进行维修、修理和大修。这促进了航空MRO市场的不断增长。此外&#xff0c;航空器设备和技术的不断更新换代&#xff0c;也对航空MRO市场带来了新的机遇和挑战。 航空MRO市场是指维修、…

【Android】实现简易购物车功能(附源码)

先上结果&#xff1a; 代码&#xff1a; 首先引入图片加载&#xff1a; implementation com.github.bumptech.glide:glide:4.15.1配置权限清单&#xff1a; <!-- 网络权限 --><uses-permission android:name"android.permission.INTERNET"/><uses…

ubuntu22.04@laptop安装配置VNC服务端

ubuntu22.04laptop安装&配置VNC服务端 1. 源由2. 系统安装3. VNC安装3.1 系统更新3.2 lightdm安装3.3 x11vnc安装3.4 x11vnc配置3.5 x11vnc自启动3.6 x11vnc状态查询 4. 演示视频 1. 源由 最近系统搞TensorFlow, OpenCV, Python&#xff0c;折腾各种环境&#xff0c;把系统…

数据库管理-第139期 做大还是做小-Oracle名称哪些事(20240125)

数据库管理139期 2024-01-25 第139期 做大还是做小-Oracle名称哪些事&#xff08;20240125&#xff09;1 问题2 排查3 扩展总结 第139期 做大还是做小-Oracle名称哪些事&#xff08;20240125&#xff09; 作者&#xff1a;胖头鱼的鱼缸&#xff08;尹海文&#xff09; Oracle A…

【备战蓝桥杯】——循环结构

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-bFHV3Dz5xMe6d3NB {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…

Leetcode刷题笔记题解(C++):1114. 按序打印(多线程)

思路&#xff1a; 保证A,B,C三个线程的顺序不会变&#xff0c;即优先级顺序的问题 A,B需要资源1&#xff0c;B,C需要资源2 A先占用资源1和资源2&#xff0c;A线程完了之后释放资源1不释放资源2&#xff0c;然后B线程占用资源1&#xff0c;A线程完了之后释放资源1和资源2&…

【极数系列】Flink配置参数如何获取?(06)

文章目录 gitee码云地址简介概述01 配置值来自.properties文件1.通过路径读取2.通过文件流读取3.通过IO流读取 02 配置值来自命令行03 配置来自系统属性04 注册以及使用全局变量05 Flink获取参数值Demo1.项目结构2.pom.xml文件如下3.配置文件4.项目主类5.运行查看相关日志 gite…

D6212——由八路达林顿管 阵列和 H 桥驱动电路两个单元组成,可用于驱动步进电机等产品上

D6212是专为安防摄像头系统设计的驱动电路&#xff0c;电路由八路达林顿管 阵列和 H 桥驱动电路两个单元组成。八路达林顿管阵列均带有续流二极 管&#xff0c;可用于驱动步进电机&#xff1b;H 桥驱动电路单元可以直接驱动IR-CUT。单个 达林顿管在输入电压低至 1.8V 状态下支持…

SQL中实现行列转换

目录 方法一&#xff1a;sum case when 方法二&#xff1a;sum if 方法三&#xff1a;pivot 现在有一张表class_gender&#xff0c;内容如下&#xff1a; classgender一年级女一年级女一年级男一年级男二年级女二年级女二年级男 现在我们要根据上表&#xff0c;统计得到下…

spring boot学习第八篇:操作elastic search的索引和索引中的数据

前提参考&#xff1a;elastic search入门-CSDN博客 前提说明&#xff1a;已经安装好了elastic search 7.x版本&#xff0c;我的es版本是7.11.1 1、 pom.xml文件内容如下&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <project xmlns&q…

深分页怎么导致索引失效了?提供6种优化的方案!

深分页怎么导致索引失效了&#xff1f;提供6种优化的方案&#xff01; 上篇文章说到索引失效的几种规则&#xff0c;其中就有包括 深分页回表太多导致索引失效 的场景 本篇文章来聊聊深分页场景中的问题并提供几种优化方案&#xff0c;以下是本篇文章的思维导图&#xff1a; …

go学习之air库的使用

首先下载air库 go install github.com/cosmtrek/air之后你需要去找到库下载的地方&#xff0c;若使用的是go mod可以使用命令 go env GOPATH找到下载库的位置 进入后&#xff0c;有bin&#xff0c;pkg目录&#xff0c;进入bin目录&#xff0c;你能看到air.exe文件 这时候将此…