SpingBoot——SB整合MB的web项目模板

news2025/6/8 21:49:02

这里是我以后用到的项目都要先创建的模板

第一步

新建一个springboot项目,这里jdk版本和java版本根据需求选择

第二步

——选择springboot版本和他提供的可以选择安装的依赖

这里因为是开发web项目,所以选择一个spring web

同时因为还要用到mysql,要一个mysql驱动,和一个mybatis框架简化开发

第三步 

完成数据库的相关配置

在配置文件application.properties当中完成和数据库连接的相关配置,可以先创建数据库也可以后面创建


#驱动类名称
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#数据库连接的url
spring.datasource.url=jdbc:mysql://localhost:3306/test1
#连接数据库的用户名
spring.datasource.username=root
#连接数据库的密码
spring.datasource.password=1234

开启驼峰命名法(这里没有用到)

mybatis.configuration.map-underscore-to-camel-case=true

添加两个有用的插件(貌似也没有用到)

 

第四步

在pom.xml加入如下的依赖

lombok的依赖(日志)

用法看这里:SpringBoot——基于SpringBoot整合Mybatis的入门案例+sql提示配置+lombok工具包介绍_北岭山脚鼠鼠的博客-CSDN博客

SpringBoot——SB整合mybatis案例(残缺版本)第一集_北岭山脚鼠鼠的博客-CSDN博客

  <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>

第五步

准备各层的包文件夹如下

resources中的目录结构是为XML开发准备(没有用到)

 

第六步

规定Result风格,所有的响应数据都必须规定使用Result风格的数据来响应

做法为在pojo中增加如下的一个实体类Result,该类有三种属性,一个是请求成功与否,第二个是请求的执行状态,最后一个是请求返回的数据。这里三个属性需要构造setter和getter方法还有有参和无参构造方法。

用到的三个注解就是来自上面依赖里引入的lombok。

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Result {
    private Integer code;//响应码,1 代表成功; 0 代表失败
    private String msg;  //响应信息 描述字符串
    private Object data; //返回的数据

    //增删改 成功响应
    public static Result success(){
        return new Result(1,"success",null);
    }
    //查询 成功响应
    public static Result success(Object data){
        return new Result(1,"success",data);
    }
    //失败响应
    public static Result error(String msg){
        return new Result(0,msg,null);
    }
}

到这里一个基本的项目模板就已经基本完成了

现在演示实现一个根据id的查询功能和插入功能

准备工作:

先准备一个数据库test1和该数据库下的一个users表,使用如下的建表语句

create database test1;

drop table users;
create table `users`(
    `id` int unsigned not null auto_increment primary key comment '主键ID',
    `name` varchar(100) COLLATE utf8mb3_bin default null comment '姓名',
    `age` tinyint unsigned default  null comment '年龄',
    `create_time` datetime not null comment '用户创建时间'
)auto_increment=1 DEFAULT CHARSET=utf8mb3 comment ='用户表';

insert into users(name,age,create_time) values('YhY',15,'2023-03-24 17:33:10');
insert into users(name,age,create_time) values('杨辉',50,'2023-04-12 18:33:10');

select * from users;

上面auto_increment是让主键id自动递增, auto_increment=1是主键从1开始递增,默认就是1

COLLATE utf8mb3_bin是让name区分大小写,下面 DEFAULT CHARSET=utf8mb3是设定该表的字符集编码为utf8mb3

有了数据库表之后就要有一个对应的实体类

在pojo层当中新建如下的Users类

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Users {
    private Integer id;
    private String name;
    private Integer age;
    private LocalDateTime createTime;
}

每一层之间关系如下

controller——>service——>mapper,前一个获取后一个的bean对象后调用对应方法实现操作

在Controller当中如下所示

@RestController是ResponseBody和Controller的结合,可以返回一个json格式的数据,如果单单使用Controller的话是只返回一个视图

@RequestMapping指定了该类中的所有资源的访问路径必须以/users开头

@Slf4j是为了在下面使用日志记录相关信息,这个是上面lombok的注解。

每一个资源的返回值都要按照Result规范来

下面有使用注解指定了两种请求——Post请求和Get请求,Post请求的参数,

post请求的参数都在请求体里面,这里要在方法形参前面加上一个@RequestBody注解去获取

get请求的参数都在url当中,用另外一个注解@PathVariable去获取

@Slf4j
@RestController
@RequestMapping("/users")
public class UsersController {

    @Autowired
    private UsersService usersService;

    @PostMapping
    public Result add(@RequestBody Users users)
    {
        log.info("新增用户: {}",users);
        usersService.add(users);
        return Result.success();
    }

    @GetMapping("/{id}")
    public Result getById(@PathVariable Integer id){
log.info("根据ID查询用户id:{}",id);
Users users=usersService.getById(id);
log.info("查询到的员工信息:{}",users);
return Result.success(users);
    }
}

在Service层当中如下所示

这一层将调用mapper当中的映射接口实现对应功能

这里的添加新用户时需要有一个添加时间,直接调用LocalDateTime的now()方法获取当前时间设置在users里面然后再传进Mapper层当中。

@Service
public class UsersServiceImpl implements UsersService {
    @Autowired
    private UsersMapper usersMapper;

    @Override
    public void add(Users users) {
        users.setCreateTime(LocalDateTime.now());
        usersMapper.insert(users);
    }

    @Override
    public Users getById(Integer id) {
       Users users=usersMapper.getById(id);
        return users;
    }
}

在Mapper层如下所示

这里对于要放进sql语句当中的数值要使用一个#{}参数占位符,传进来的是一个实体类会自动去匹配类当中的属性,传进来一个属性就匹配属性名称。

这里还没有展示开启驼峰命名法的作用。

@Mapper
public interface UsersMapper {
@Insert("insert into users(name,age,create_time) values(#{name},#{age},#{createTime})")
     void insert(Users users);

@Select("select * from users where id = #{id}")
    Users getById(Integer id);
}

使用postman测试如下

发送查询请求得到一个Result格式的响应数据

控制台输出

 发送添加请求得到一个Result格式的响应数据

控制台输出如下

在数据库表当中的数据 

 

结束,上面就是一个通用模板的创建使用,以后有了通用的东西再加

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

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

相关文章

分享4个不可或缺的 VSCode 插件,让 Tailwind CSS开发更简单

本文将为大家分享我在使用 Tailwind 进行开发时常用的四个 VSCode 扩展程序&#xff0c;这些扩展程序都包含在 VSCode 的 TailwindCSS Kit 扩展程序包中。1.Tailwind CSS IntelliSenseTailwind CSS IntelliSense 是一款功能强大的工具&#xff0c;可以帮助开发者更快、更高效地…

python-day1

第001天&#xff1a;初识python 本博客主要涉及到以下几个部分 1、配置镜像源 2、变量名及其命名规范 3、input函数和数据类型 4、指令和程序 5、运算符 6、练习 1、配置镜像源 此处我配置的是豆瓣源&#xff0c;操作步骤如下&#xff1a; 1、进入D:XXX\Scripts文件夹&#xff…

NumPy 初学者指南中文第三版:1~5

原文&#xff1a;NumPy: Beginner’s Guide - Third Edition 协议&#xff1a;CC BY-NC-SA 4.0 译者&#xff1a;飞龙 一、NumPy 快速入门 让我们开始吧。 我们将在不同的操作系统上安装 NumPy 和相关软件&#xff0c;并看一些使用 NumPy 的简单代码。 本章简要介绍了 IPython…

数据结构和算法学习记录——初识二叉树(定义、五种基本形态、几种特殊的二叉树、二叉树的重要性质、初识基本操作函数)

目录 二叉树的定义 二叉树具体的五种基本形态 1.空树 2.只有一个节点 3.有左子树&#xff0c;但右子树为空 4.有右子树&#xff0c;但左子树为空 5.左右两子树都不为空 特殊二叉树 斜二叉树 满二叉树 完全二叉树 二叉树的几个重要性质 初识二叉树的几个操作函数 …

线性代数代码实现(七)求解线性方程组(C++)

前言&#xff1a; 上次博客&#xff0c;我写了一篇关于定义矩阵除法并且代码的文章。矩阵除法或许用处不大&#xff0c;不过在那一篇文章中&#xff0c;我认为比较好的一点是告诉了大家一种计算方法&#xff0c;即&#xff1a;若矩阵 已知且可逆&#xff0c;矩阵 已知&#x…

2021蓝桥杯真题大写 C语言/C++

题目描述 给定一个只包含大写字母和小写字母的字符串&#xff0c;请将其中所有的小写字母转换成大写字母后将字符串输出。 输入描述 输入一行包含一个字符串。 输出描述 输出转换成大写后的字符串。 输入输出样例 示例 输入 LanQiao 输出 LANQIAO 评测用例规模与约定 对于…

[架构之路-158]-《软考-系统分析师》-10-系统分析-1-5-逻辑设计、逻辑模型(系统分析师的主要职责之一)

目录 前言&#xff1a;什么是系统 科学内涵 常见的系统 第 10章 现有系 统 分 析 1 0 . 1 系统分析概述 1 . 系统分析的任务 2 . 系统分析的难点 3 . 对系统分析师的要求 1 0 . 2 详细调查 10.2.1 详细调查的原则 10.2.2 详细调査的内容 》对企业的实际运营和业务进…

async/await 函数到底要不要加 try catch ?

前言 写异步函数的时候&#xff0c;promise 和 async 两种方案都非常常见&#xff0c;甚至同一个项目里&#xff0c;不同的开发人员都使用不同的习惯, 不过关于两者的比较不是本文关注的重点&#xff0c;只总结为一句话&#xff1a;“async 是异步编程的终极解决方案”。 当使…

匿名管道与命名管道

匿名管道与命名管道一&#xff0c;进程间通信什么是进程间通信进程间通信的目的管道的概念二&#xff0c;匿名管道匿名管道的创建匿名管道使用匿名管道的特性以及四种场景匿名管道的原理通过匿名管道实现简易进程池。三&#xff0c;命名管道命名管道的创建命名管道的使用命名管…

vue3+vite+ts 接入QQ登录

说明 前提资料准备 在QQ互联中心注册成为开发者 站点&#xff1a;https://connect.qq.com/创建应用&#xff0c;如图 js sdk方式 下载对应的sdk包 sdk下载&#xff1a;https://wiki.connect.qq.com/sdk%e4%b8%8b%e8%bd%bd 使用 下载离线js sdk 打开&#xff1a;https:…

jQuery核心

目录 一、引入jQuery 二、jQuery的内涵 1、jQuery挂载在window对象上 2、jQuery是一个函数对象 三、jQuery函数的四种参数形式 1、参数是一个函数function 2、参数是一个选择器 3、参数是一个DOM对象 4、参数是一个HTML元素标签&#xff08;HTML代码&#xff09; 简介…

【Linux】八、Linux进程信号详解(完结)

目录 三、阻塞信号 3.1 信号其他相关常见概念 3.2 信号在内核中的表示 3.3 sigset_t 3.4 信号集操作函数 3.5 sigprocmask函数 3.6 sigpending函数 3.7 信号集实验 四、深入理解捕捉信号 4.1 进程地址空间二次理解&#xff08;内核空间与用户空间&#xff09; 4.2 用…

黑马的redis实战篇-短信登录

目录 四、实战篇-短信登录 4.1 导入黑马点评项目 1、后端&#xff1a; 2、前端 4.2 基于Session实现登录 1、发送验证码 2、短信验证码登录注册 3、校验登录状态 4.3 集群的session共享问题 4.4 基于Redis实现共享session登录 1、发送验证码 2、短信验证码登录注册 …

NumPy 秘籍中文第二版:六、特殊数组和通用函数

原文&#xff1a;NumPy Cookbook - Second Edition 协议&#xff1a;CC BY-NC-SA 4.0 译者&#xff1a;飞龙 在本章中&#xff0c;我们将介绍以下秘籍&#xff1a; 创建通用函数查找勾股三元组用chararray执行字符串操作创建一个遮罩数组忽略负值和极值使用recarray函数创建一…

蓝桥杯之单片机学习(终)——关于之前文章的错误及更正(附:第十四届蓝桥杯单片机赛题)

文章目录零、吐槽一、关于自创模板&#xff0c;和自写模板库的问题二、关于 详解A/D、D/A、PCF8591 这篇文章一些小错误三、模板最终版本main.cds1302,hds1302.conewire.honewire.ciic.hiic.c附、第十四届蓝桥杯单片机赛题零、吐槽 今年是矩阵键盘三个协议一起调用啊。真是一年…

“AI+机器人”持续为多领域增“智”添“质”,开启效益增长飞轮

近期&#xff0c;工信部等17部门联合推出《“机器人”应用行动实施方案》&#xff0c;全面加快机器人领域应用拓展。据方案提出&#xff0c;至2025年&#xff0c;制造业机器人密度较2020年将实现翻番&#xff0c;服务机器人及特种机器人行业应用深度与广度显著提升。机器人融合…

服务器被DDoS攻击,怎么破?

文章目录前言网站受到DDoS的症状判断是否被攻击查看网络带宽占用查看网络连接TCP连接攻击SYN洪水攻击防御措施TCP/IP内核参数优化iptables 防火墙预防防止同步包洪水&#xff08;Sync Flood&#xff09;Ping洪水攻击&#xff08;Ping of Death&#xff09;控制单个IP的最大并发…

基于SpringBoot的私人健身和教练的预约管理系统源码数据库论文

目 录 第一章 概述 1.1研究背景 1.2开发意义 1.3研究现状 1.4研究内容 1.5论文结构 第二章 开发技术介绍 2.1系统开发平台 2.2平台开发相关技术 2.2.1 Javar技术 2.2.2 Mysql数据库介绍 2.2.3 Mysql环境配置 2.2.4 B/S架构 2.2.5 Springboot框架 …

主动配电网故障恢复的重构与孤岛划分统一模型研究【升级版本】(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

V8引擎执行原理

v8是C编写的Google开源高性能JavaScript和WebAssembly引擎&#xff0c;它用于Chrome和Node.js等。 它实现ECMAScript和WebAssembly。 v8可独立运行&#xff0c;也可嵌入到任何C应用程序中。 parse模块 parse模块会将JavaScript代码转换成AST(抽象语法树)&#xff0c;因为解…