SpringBoot day 1105

ok了家人们,今天继续学习spring boot,let‘s go

.SpringBoot实现SSM

6.1 创建工程,导入静态资源

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<h2>根据ID查询员工数据</h2>
<input type="button" value="点我" onclick="fn01()"/><h2>查询所有员工数据</h2>
<input type="button" value="点我" onclick="fn02()"/><h2>更新员工数据</h2>
<input type="button" value="点我" onclick="fn03()"/><h2>修改员工数据</h2>
<input type="button" value="点我" onclick="fn04()"/><h2>删除员工数据</h2>
<input type="button" value="点我" onclick="fn05()"/><script src="/js/axios-0.18.0.js"></script><script>function fn01(){axios.get("http://localhost:8080/emp/findEmpById?empId=1").then(function(response){console.log(response.data);});}function fn02(){axios.get("http://localhost:8080/emp/findAllEmp").then(function(response){console.log(response.data);});}function fn03(){axios.post("http://localhost:8080/emp/saveEmp",{"empName":"lh","empSalary":5000.00}).then(function(response){console.log(response.data);});}function fn04(){axios.put("http://localhost:8080/emp/updateEmp",{"empName":"lh","empSalary":5000.00,"empId":1}).then(function(response){console.log(response.data);});}function fn05(){axios.delete("http://localhost:8080/emp/deleteEmpById?empId=20 ").then(function(response){console.log(response.data);});}
</script>
</body>
</html>

6.2 引入依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.cjx</groupId><artifactId>springboot_ssm</artifactId><version>1.0-SNAPSHOT</version><properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><!--所有的springboot工程需要继承的父工程--><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.10.RELEASE</version></parent><dependencies><!--web开发的相关依赖  场景启动器依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.3.0</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.16</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.25</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency></dependencies><!-- SpringBoot应用打包插件--><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>
</project>

6.3 编写配置文件

​
#服务器端口号
server:port: 8080#数据库信息配置
spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/mybatisusername: rootpassword: 123456type: com.alibaba.druid.pool.DruidDataSourceapplication:name: /#配置mapper的映射文件的位置
mybatis:configuration:map-underscore-to-camel-case: truemapper-locations: classpath:mapper/*.xmltype-aliases-package: com.cjx.pojo​

 yml文件注意书写方式,详情可以看上篇

6.4 创建启动类

package com.cjx;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.transaction.annotation.EnableTransactionManagement;@SpringBootApplication
@EnableTransactionManagement//开启事务支持
public class Application {public static void main(String[] args){SpringApplication.run(Application.class, args);}
}

6.5 创建实体类

package com.cjx.pojo;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;@Data
@AllArgsConstructor
@NoArgsConstructor
public class Emp {private Integer empId;private String empName;private Double empSalary;
}
package com.cjx.pojo;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;@Data
@AllArgsConstructor
@NoArgsConstructor
public class Result {private int code;//响应状态码private String msg;//响应消息private Object data;//响应数据
}

如果你想写的更好可以将状态码再编写一个实体类,去响应

6.6 编写Mapper

package com.cjx.mapper;import com.cjx.pojo.Emp;
import org.apache.ibatis.annotations.Mapper;import java.util.List;@Mapper
public interface EmpMapper {//根基id查询员工信息Emp findEmpById(Integer id);//查询所有员工List<Emp> findAllEmp();//更新员工信息Integer saveEmp(Emp emp);//修改员工信息Integer updateEmp(Emp emp);//删除员工信息Integer deleteEmpById(Integer id);}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.cjx.mapper.EmpMapper"><select id="findEmpById" resultType="Emp">select * from t_emp where emp_id=#{empId}</select><select id="findAllEmp" resultType="Emp">select * from t_emp</select><insert id="saveEmp" parameterType="Emp">insert into t_emp values(null,#{empName},#{empSalary})</insert><update id="updateEmp" parameterType="Emp">update t_emp set emp_name=#{empName},emp_salary=#{empSalary} where emp_id=#{empId}</update><delete id="deleteEmpById" parameterType="Integer">delete from t_emp where emp_id=#{empId}</delete>
</mapper>

这个也可以直接在empMapper类中直接用注解写sql语句,不用映射配置文件

6.7 编写Service

package com.cjx.service;import com.cjx.pojo.Emp;import java.util.List;public interface EmpService {//根基id查询员工信息public Emp findEmpById(Integer id);//查询所有员工信息public List<Emp> findAllEmp();//更新员工信息public Integer saveEmp(Emp emp);//修改员工信息public Integer updateEmp(Emp emp);//删除员工信息public Integer deleteEmpById(Integer id);
}

 

package com.cjx.service.impl;import com.cjx.mapper.EmpMapper;
import com.cjx.pojo.Emp;
import com.cjx.service.EmpService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;import java.util.List;@Service
@Transactional
public class EmpServiceImpl implements EmpService {@Autowiredprivate EmpMapper empMapper;@Overridepublic Emp findEmpById(Integer id) {return empMapper.findEmpById(id);}@Overridepublic List<Emp> findAllEmp() {return empMapper.findAllEmp();}@Overridepublic Integer saveEmp(Emp emp) {return empMapper.saveEmp(emp);}@Overridepublic Integer updateEmp(Emp emp) {return empMapper.updateEmp(emp);}@Overridepublic Integer deleteEmpById(Integer id) {return empMapper.deleteEmpById(id);}
}

6.8 编写Controller

package com.cjx.controller;import com.cjx.pojo.Emp;
import com.cjx.pojo.Result;
import com.cjx.service.EmpService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;import java.util.List;@RestController
@RequestMapping("/emp")
public class EmpController {@Autowiredprivate EmpService empService;@GetMapping("/findEmpById")public Result findEmpById(Integer empId){Emp emp = empService.findEmpById(empId);if (emp != null){return new Result(200,"查询成功",emp);}else{return new Result(50001,"查询失败",null);}}@GetMapping("/findAllEmp")public Result findAllEmp(){List<Emp> empList = empService.findAllEmp();if (empList != null){return new Result(200,"查询成功",empList);}else{return new Result(50001,"查询失败",null);}}@PostMapping("/saveEmp")public Result saveEmp(@RequestBody Emp emp){Integer row = empService.saveEmp(emp);if (row == 1){return new Result(200,"查询成功",emp);}else{return new Result(50001,"查询失败",null);}}@PutMapping("/updateEmp")public Result updateEmp(@RequestBody Emp emp){Integer row = empService.updateEmp(emp);if (row == 1){return new Result(200,"查询成功",emp);}else{return new Result(50001,"查询失败",null);}}@DeleteMapping("/deleteEmpById")public Result deleteEmpById(Integer empId){Integer row = empService.deleteEmpById(empId);if (row == 1){return new Result(200,"查询成功",null);}else{return new Result(50001,"查询失败",null);}}
}

ok了家人们,明天见byebye

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

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

相关文章

fastbootd模式刷android固件的方法

1. fastbootd追根溯源 Google在Android 10上正式引入了动态分区机制来提升OTA的可扩展性。动态分区使能后&#xff1a;andorid系统可以在开机阶段动态地进行分区创建、分区销毁、分区大小调整等操作&#xff0c;下游厂商只需要规划好super分区的总大小&#xff0c;其内部的各个…

什么是多因素身份验证(MFA)的安全性?

多因素身份验证(MFA)简介 什么是MFA 多因素身份验证(MFA)是一种安全过程&#xff0c;要求用户在授予对系统、应用程序或账户的访问权限之前提供两种或多种形式的验证。仅使用单个因素&#xff08;通常是用户名和密码&#xff09;保护资源会使它们容易受到泄露&#xff0c;添加…

2024年【汽车修理工(高级)】考试总结及汽车修理工(高级)试题及解析

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 汽车修理工&#xff08;高级&#xff09;考试总结是安全生产模拟考试一点通总题库中生成的一套汽车修理工&#xff08;高级&#xff09;试题及解析&#xff0c;安全生产模拟考试一点通上汽车修理工&#xff08;高级&a…

qt QFontDialog详解

1、概述 QFontDialog 是 Qt 框架中的一个对话框类&#xff0c;用于选择字体。它提供了一个可视化的界面&#xff0c;允许用户选择所需的字体以及相关的属性&#xff0c;如字体样式、大小、粗细等。用户可以通过对话框中的选项进行选择&#xff0c;并实时预览所选字体的效果。Q…

DolphinScheduler告警通知

DolphinScheduler告警通知 Dolphinscheduler支持多种告警媒介&#xff0c;此处以电子邮件为例进行演示。 1 准备邮箱 如需使用DolphinScheduler的电子邮件告警通知功能&#xff0c;需要准备一个电子邮箱账号&#xff0c;并启用SMTP服务。此处以 QQ 邮箱为例。 1.1 开启 SMTP 服…

Spring 中的 Environment 对象

可参考官网&#xff1a;Environment Abstraction 核心概念 Environment 对象对两个关键方面进行建模&#xff1a;profiles 和 属性&#xff08;properties&#xff09;。 Profile 简单来说&#xff1a;profile 机制在 IOC 容器中提供了一种机制&#xff1a;允许在不同的环境…

【论文速读】Optimization-based Prompt Injection Attack to LLM-as-a-Judge

基于优化的提示词注入攻击 摘要引言问题描述LLM-as-a-judge威胁模型攻击者知道什么 JUDGEDECEIVER 细节概述生成影子候选回复公式化为优化问题Target-aligned generation lossTarget-enhancement lossAdversarial perplexity loss优化问题 求解优化问题 摘要 LLM-as-a-Judge 利…

qt QStandardItem详解

1、概述 QStandardItem是Qt框架中QStandardItemModel的一个基础元素&#xff0c;用于在基于项的模型&#xff08;如QStandardItemModel&#xff09;中表示单个数据项。QStandardItem可以存储文本、图标、工具提示等丰富的信息&#xff0c;并且支持数据的编辑和自定义显示。通过…

戴尔电脑 Bios 如何进入?Dell Bios 进入 Bios 快捷键是什么?

BIOS&#xff08;基本输入输出系统&#xff09;是计算机启动时运行的第一个程序&#xff0c;它负责初始化硬件并加载操作系统。对于戴尔电脑用户来说&#xff0c;有时可能需要进入 BIOS 进行一些特定的设置调整&#xff0c;比如更改启动顺序、调整性能选项或解决硬件兼容性问题…

低代码解锁跨平台应用开发新境界

数字化转型中&#xff0c;企业面临应用开发挑战&#xff0c;低代码平台成为理想选择。ZohoCreator提供统一开发环境、拖拽设计、预置模板等&#xff0c;支持高效构建跨平台应用&#xff0c;确保数据安全与合规&#xff0c;助力企业数字化转型。 一、低代码平台是什么&#xff1…

`掌握Python-PPTX,让PPt制作变得轻而易举!`

文章目录 掌握Python-PPTX&#xff0c;让PPT制作变得轻而易举&#xff01;背景介绍python-pptx 是什么&#xff1f;如何安装 python-pptx&#xff1f;简单库函数使用方法应用场景常见Bug及解决方案总结 掌握Python-PPTX&#xff0c;让PPT制作变得轻而易举&#xff01; 背景介绍…

【含文档+源码】基于SpringBoot+Vue的新型吃住玩一体化旅游管理系统的设计与实现

开题报告 本文旨在探讨新型吃住玩一体化旅游管理系统的设计与实现。该系统融合了用户注册与登录、旅游景点管理、旅游攻略发帖、特色旅游路线推荐、附近美食推荐以及酒店客房推荐与预定等多项功能&#xff0c;旨在为游客提供全方位、一体化的旅游服务体验。在系统设计中&#…

[C++]——哈希(附源码)

目录 ​编辑 ​编辑 一、前言 二、正文 2.1 unorder系列关联式容器 2.1.1 unordered_map 2.1.1.1 unorderer_map的介绍 ①unordered_map的构造 ②unordered_map的容量 ③unordered_map的迭代器 ④unordered_map的元素访问 ⑤unordered_map的查询 ⑥unordered_map的修改操…

Oracle视频基础1.4.5练习

1.4.5 看bbk的框架 ls env | grep ORA cd /u01/oradata ls ll cd bbk ll cd /u01/admin/ ll ll bbk cd cd db cd dbs ls vi initbbk.ora clear ls ll env | grep ORA执行创建数据库语句。 sqlplus /nolog conn /as sysdba create spfile from pfile ! ls ll exit startup nom…

Spring Boot 与 Vue 共筑高校网上订餐卓越平台

作者介绍&#xff1a;✌️大厂全栈码农|毕设实战开发&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。 &#x1f345;获取源码联系方式请查看文末&#x1f345; 推荐订阅精彩专栏 &#x1f447;&#x1f3fb; 避免错过下次更新 Springboot项目精选实战案例 更多项目…

【设计模式系列】建造者模式(十)

目录 一、什么是建造者模式 二、建造者模式的角色 三、建造者模式的典型应用 四、建造者模式在StringBuilder中的应用 五、典型建造者模式的案例 一、什么是建造者模式 建造者模式&#xff08;Builder Pattern&#xff09;是一种创建型设计模式&#xff0c;用于构建复杂对…

H7-TOOL的LUA小程序教程第17期:扩展驱动AD7606, ADS1256,MCP3421, 8路继电器和5路DS18B20(2024-11-01)

LUA脚本的好处是用户可以根据自己注册的一批API&#xff08;当前TOOL已经提供了几百个函数供大家使用&#xff09;&#xff0c;实现各种小程序&#xff0c;不再限制Flash里面已经下载的程序&#xff0c;就跟手机安装APP差不多&#xff0c;所以在H7-TOOL里面被广泛使用&#xff…

P10 Pytorch入门实战——Pytorch实现车牌识别

一、前期准备 1. 设置device # import the necessary libraries import torch import torch.nn as nn import torchvision.transforms as transforms from torchvision import transforms, datasets import matplotlib.pyplot as plt import PIL,pathlib from PIL import Im…

基于SSM+小程序的宿舍管理系统(宿舍1)

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1、项目介绍 本宿舍管理系统小程序有管理员和学生两个角色。 1、管理员功能有个人中心&#xff0c;公告信息管理&#xff0c;班级管理&#xff0c;学生管理&#xff0c;宿舍信息管理&#xff0c;宿舍…

基于 JavaWeb 的宠物商城系统(附源码,文档)

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…