当前位置: 首页 > news >正文

SpringBoot后端代码基本逻辑

数据持久化(Dao---Entity---mapper)

配置(application.yml)
server:port: 10086
​
spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://127.0.0.1:3306/wiki?useUnicode=true&characterEncoding=utf8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&serverTimezone=UTC&useSSL=trueusername: rootpassword: jia******
​
mybatis:mapper-locations: classpath:/mapper/*.xml
写创建库表语句
drop table if exists `demo`;
create table `demo`
(`id`   bigint not null comment 'id',`name` varchar(50) comment '名称',`other_name` vachar(50) comment '代替名',primary key (`id`)
) engine = innodb default charset utf8mb4 comment ='测试';
​
insert into `demo` (id, name,other_name)VALUES (1, '测试', 'text');
写相应的实体
//使用lombok写实体---我是用的方式,build创建实体很方便
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
​
/*** @author Rui* @description demo实体类* @create 2024/7/5 16:58*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class DemoEntity {private Integer id;private String name;private String otherName;
​
}
//使用getter,setter
/*** @author Rui* @description demo实体类* @create 2024/7/5 16:58*/
​
public class DemoEntity {private Integer id;private String name;private String otherName;
​public Integer getId() { return id; }public void setId(Integer id) { this.id = id; } public String getName() { return name; }public void setName(String name) { this.name = name; }
​public String getOtherName() { return otherName; } public void setOtherName(String otherName) {  this.otherName = otherName; }
​public DemoEntity() { } public DemoEntity(Integer id, String name, String otherName) {this.id = id;this.name = name;this.otherName = otherName;}
}
​
写mapper
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace= "com.jiawa.wiki.dao.DemoDao">
​<resultMap id ="dateMap" type="com.jiawa.wiki.domain.DemoEntity"><id column="id" property="id"/><result column="name" property="name"/><result column="password" property="password"/></resultMap>
​<select id="queryAllDemoDate" resultType="com.jiawa.wiki.domain.DemoEntity">select * from `demo`</select>
</mapper>
写dao接口
import com.jiawa.wiki.domain.DemoEntity;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
​
/*** @author Rui* @description 提供给服务层service的接口* @create 2024/7/5 17:01*/
@Mapper
public interface DemoDao {List<DemoEntity> queryAllDemoDemo();
}

服务层对数据持久层的数据做处理

service
import com.jiawa.wiki.dao.DemoDao;
import com.jiawa.wiki.domain.DemoEntity;
import org.springframework.stereotype.Service;
​
import javax.annotation.Resource;
import java.util.List;
​
/*** @author Rui* @description 为controller层提供服务,对数据层的数据处理* @create 2024/7/5 17:19*/
@Service
public class DemoService {@Resourceprivate DemoDao DemoDao;
​public List<DemoEntity> selectAllDateDemo(){List<DemoEntity> DemoEntities = DemoDao.queryAllDemoDate();return DemoEntities;}
}
​

控制层接收服务层提供的数据,或者向服务层传递前端的数据

controller
import com.jiawa.wiki.domain.DemoEntity;
import com.jiawa.wiki.service.DemoService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
​
import javax.annotation.Resource;
import java.util.List;
​
/*** @author Rui * @description 接收服务层的数据,像服务层传递数据* @description return出去的数据,浏览器就可以接收到了,几乎所有格式* @create 2024/7/5 14:53*/
@Slf4j
@RestController
//注意是rest风格的controller
public class DemoController {
​@Resourceprivate DemoService DemoService;//get方法和post方法效果相同,但是post可以在url中不显示参数@RequestMapping(value = "/hello", method = RequestMethod.GET)public String Hello() {return "Hello world";}
​
//除了post、get还有delete很多方法    @RequestMapping(value = "/hello/post", method = RequestMethod.POST)public String HelloPost(String name) {return "Hello world " +name;}
​@RequestMapping(value = "/hello/queryAll", method = RequestMethod.GET)public List<DemoEntity> queryAllDateDemo() {return DemoService.selectAllDateDemo();}
}

相关文章:

SpringBoot后端代码基本逻辑

数据持久化&#xff08;Dao---Entity---mapper&#xff09; 配置&#xff08;application.yml&#xff09; server:port: 10086 ​ spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://127.0.0.1:3306/wiki?useUnicodetrue&characterEnco…...

Python学生信息管理系统的设计与实现

在本篇博客中&#xff0c;我们将深入探讨一个基于Python的简单学生信息管理系统的设计与实现过程。这个系统允许用户执行诸如添加、删除、修改和查询学生信息等操作。我们将逐步解析代码&#xff0c;理解其中的关键概念和编程实践。 1. 系统概述 该系统由几个核心功能组成&am…...

最优雅的PHP框架 Laravel

Laravel 之所以被称为最优雅的 PHP 框架,是因为它在设计和功能上做了很多独特的创新,极大地提高了开发效率和代码的可维护性。以下是 Laravel 受欢迎的主要原因: 良好的文档和社区支持 Laravel 有详尽的官方文档,涵盖了框架的所有功能和用法。此外,Laravel 社区非常活跃…...

log4j2的日志框架(详细,springboot和异步日志的实现)

目录 log4j2的介绍 Log4j2的性能 SpringBoot中的使用Log4j2 log4j2的进阶--异步日志 AsyncAppender方式 AsyncLogger方式 log4j2的介绍 Apache Log4j 2是对Log4j的升级版&#xff0c;参考了logback的一些优秀的设计&#xff0c;并且修复了一些问题&#xff0c;因此带 来…...

taocms 3.0.1 本地文件泄露漏洞(CVE-2021-44983)

前言 CVE-2021-44983 是一个影响 taoCMS 3.0.1 的远程代码执行&#xff08;RCE&#xff09;漏洞。该漏洞允许攻击者通过上传恶意文件并在服务器上执行任意代码来利用这一安全缺陷。 漏洞描述 taoCMS 是一个内容管理系统&#xff08;CMS&#xff09;&#xff0c;用于创建和管…...

SpringBoot实战:处理全局异常

1. 导入springmvc依赖 2.定义全局异常处理类 //定义全局异常处理器&#xff0c;可捕获控制层抛出的异常 ControllerAdvice public class GlobalExceptionHandler {//当控制层抛出Exception异常时会被该方法捕获&#xff0c;并执行该方法ExceptionHandler(Exception.class)Res…...

pdf只要前几页,pdf中只要前几页怎么处理

在处理pdf文件时&#xff0c;我们有时只需要其中的一页或几页&#xff0c;而不是整个文档。那么&#xff0c;如何快速且高效地从pdf中提取单独的一页呢&#xff1f;本文将为你揭示几种简单易行的方法&#xff0c;让你轻松实现这一目标。 使用 “轻云处理pdf官网” 打开 “轻云…...

实变函数精解【4】

文章目录 说明点集与测度开集的极限点集定义与解释开集的导集特性示例结论 导集一、定义二、特点三、性质四、应用五、总结 边界点与聚点的区别一、定义二、性质与区别三、结论 有界点集与测度有界点集的测度不一定有限分析原因结论注意事项 测度有限的点集&#xff0c;不一定有…...

【BUG】Python3|COPY 指令合并 ts 文件为 mp4 文件时长不对(含三种可执行源代码和解决方法)

文章目录 前言源代码FFmpeg的安装1 下载2 安装 前言 参考&#xff1a; python 合并 ts 视频&#xff08;三种方法&#xff09;使用 FFmpeg 合并多个 ts 视频文件转为 mp4 格式 Windows 平台下&#xff0c;用 Python 合并 ts 文件为 mp4 文件常见的有三种方法&#xff1a; 调用…...

AI克隆声音,基于函数计算部署GPT-Sovits语音生成模型

阿里云的基于函数计算部署GPT-Sovits语音生成模型 可以直接文字转语音&#xff0c;也可以上传一段自己的语音&#xff0c;根据你上传的语音进行语音播报。 一、打开阿里云的函数计算 https://developer.aliyun.com/adc/scenario/808348a321844a62b922187d89cd5077 还是 函数…...

DP讨论——建造者模式

学而时习之&#xff0c;温故而知新。 敌人出招&#xff08;使用场景&#xff09; 组合关系中&#xff0c;如果要A对象创建B对象&#xff0c;或者要A对象创建一堆对象&#xff0c;这种是普遍的需求。 你出招 这种适合创建者模式&#xff0c;我感觉也是比较常见的。 构造函数…...

【JavaScript】解决 JavaScript 语言报错:Uncaught SyntaxError: Unexpected token

文章目录 一、背景介绍常见场景 二、报错信息解析三、常见原因分析1. 缺少必要的语法元素2. 使用了不正确的字符或符号3. JSON 格式错误4. 字符串未正确闭合 四、解决方案与预防措施1. 检查语法元素2. 正确使用符号和字符3. 修正 JSON 格式4. 字符串闭合 五、示例代码和实践建议…...

oracle数据库的plsql免安装版安装

这个是连接oracle数据库的&#xff0c;注意安装不能有中文路径。以下只是示例。 1、打开D:\ruanjian\plsql\plsql\plsql&#xff0c;发送plsqldev.exe快捷方式到桌面。 2、新弹出的页面填写cancel,什么也不写。 3、将instanceclient解压&#xff0c;并复制文件路径。 修改tool…...

stm32使用通用定时器生成pwm

Driver_TIM5.c 通用定时器的通道1和2可以做时钟源 #include "Driver_TIM5.h"void Driver_TIM5_Init(void) {/* 1. 开启时钟*//* 1.1 定时器5的时钟 */RCC->APB1ENR | RCC_APB1ENR_TIM5EN;/* 1.2 GPIO的时钟 PA */RCC->APB2ENR | RCC_APB2ENR_IOPAEN;/* 2. 设…...

老物件线上3D回忆展拓宽了艺术作品的展示空间和时间-深圳华锐视点

在数字技术的浪潮下&#xff0c;3D线上画展为艺术家们开启了一个全新的展示与销售平台。这一创新形式不仅拓宽了艺术作品的展示空间&#xff0c;还为广大观众带来了前所未有的观赏体验。 3D线上画展制作以其独特的互动性&#xff0c;让艺术不再是单一的视觉享受。在这里&#x…...

对于多个表多个字段进行查询、F12查看网页的返回数据帮助开发、数据库的各种查询方式(多对多、多表查询、子查询等)。

对于多个表多个字段进行查询、F12查看网页的返回数据帮助开发、数据库的各种查询方式&#xff08;多对多、多表查询、子查询等&#xff09;。 一、 前端界面需要展现多个表的其中几个数据的多表查询。1. 三个表查询其中字段返回&#xff1a;&#xff08;用一下sql语句&#xff…...

护网HW面试常问——组件中间件框架漏洞(包含流量特征)

apache&iis&nginx中间件解析漏洞 参考我之前的文章&#xff1a;护网HW面试—apache&iis&nginx中间件解析漏洞篇-CSDN博客 log4j2 漏洞原理&#xff1a; 该漏洞主要是由于日志在打印时当遇到${后&#xff0c;以:号作为分割&#xff0c;将表达式内容分割成两部…...

招投标数据采集:为企业决策提供数据支持

在当今数据驱动的时代&#xff0c;招投标信息作为行业竞争情报的重要组成部分&#xff0c;正日益成为企业制定战略决策的关键依据。本文将深入探讨招投标数据采集的重要性&#xff0c;以及它如何为企业决策提供强有力的数据支持&#xff0c;同时揭秘如何高效、精准地获取这些数…...

02:项目二:感应开关盖垃圾桶

感应开关盖垃圾桶 1、PWM开发SG901.1、怎样通过C51单片机输出PWM波&#xff1f;1.2、通过定时器输出PWM波来控制SG90 2、超声波测距模块的使用3、感应开关盖垃圾桶 需要材料&#xff1a; 1、SG90舵机模块 2、HC-SR04超声波模块 3、震动传感器 4、蜂鸣器 5、若干杜邦线 1、PWM开…...

eNsp公司管理的网络NAT策略搭建

实验拓扑图 实验需求&#xff1a; 7&#xff0c;办公区设备可以通过电信链路和移动链路上网(多对多的NAT&#xff0c;并且需要保留一个公网IP不能用来转换) 8&#xff0c;分公司设备可以通过总公司的移动链路和电信链路访问到Dmz区的http服务器 9&#xff0c;多出口环境基于带…...

HTML 语义化

目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案&#xff1a; 语义化标签&#xff1a; <header>&#xff1a;页头<nav>&#xff1a;导航<main>&#xff1a;主要内容<article>&#x…...

Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)

参考官方文档&#xff1a;https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java&#xff08;供 Kotlin 使用&#xff09; 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...

HDFS分布式存储 zookeeper

hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架&#xff0c;允许使用简单的变成模型跨计算机对大型集群进行分布式处理&#xff08;1.海量的数据存储 2.海量数据的计算&#xff09;Hadoop核心组件 hdfs&#xff08;分布式文件存储系统&#xff09;&a…...

Linux nano命令的基本使用

参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时&#xff0c;显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...

【Linux系统】Linux环境变量:系统配置的隐形指挥官

。# Linux系列 文章目录 前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变量的生命周期 四、环境变量的组织方式五、C语言对环境变量的操作5.1 设置环境变量&#xff1a;setenv5.2 删除环境变量:unsetenv5.3 遍历所有环境…...

MySQL 主从同步异常处理

阅读原文&#xff1a;https://www.xiaozaoshu.top/articles/mysql-m-s-update-pk MySQL 做双主&#xff0c;遇到的这个错误&#xff1a; Could not execute Update_rows event on table ... Error_code: 1032是 MySQL 主从复制时的经典错误之一&#xff0c;通常表示&#xff…...

【Linux手册】探秘系统世界:从用户交互到硬件底层的全链路工作之旅

目录 前言 操作系统与驱动程序 是什么&#xff0c;为什么 怎么做 system call 用户操作接口 总结 前言 日常生活中&#xff0c;我们在使用电子设备时&#xff0c;我们所输入执行的每一条指令最终大多都会作用到硬件上&#xff0c;比如下载一款软件最终会下载到硬盘上&am…...

Xela矩阵三轴触觉传感器的工作原理解析与应用场景

Xela矩阵三轴触觉传感器通过先进技术模拟人类触觉感知&#xff0c;帮助设备实现精确的力测量与位移监测。其核心功能基于磁性三维力测量与空间位移测量&#xff0c;能够捕捉多维触觉信息。该传感器的设计不仅提升了触觉感知的精度&#xff0c;还为机器人、医疗设备和制造业的智…...

macOS 终端智能代理检测

&#x1f9e0; 终端智能代理检测&#xff1a;自动判断是否需要设置代理访问 GitHub 在开发中&#xff0c;使用 GitHub 是非常常见的需求。但有时候我们会发现某些命令失败、插件无法更新&#xff0c;例如&#xff1a; fatal: unable to access https://github.com/ohmyzsh/oh…...

OCR MLLM Evaluation

为什么需要评测体系&#xff1f;——背景与矛盾 ​​ 能干的事&#xff1a;​​ 看清楚发票、身份证上的字&#xff08;准确率>90%&#xff09;&#xff0c;速度飞快&#xff08;眨眼间完成&#xff09;。​​干不了的事&#xff1a;​​ 碰到复杂表格&#xff08;合并单元…...