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

springboot简单应用

快速开发Springboot项目实现简单的增删改查,前期需要准备:idea与postman安装 Maven,MySQL(8),JDK(21)

 目录


前言

springboot 使用3.0+版本,JDK使用21,MySQL使用8版本 开发环境IDEA使用2024版本

springboot内嵌了Tomcat,包含spring框架,提供starter 简化Maven配置。这里直接使用JPA作为ORM,不引入mybatis。CRUD采用rest(@PostMapping,@GetMapping("/{userId}",@PutMapping,@DeleteMapping("/{userId}")形式)风格。


相关代码组织结构:controller service repository(dao) pojo(entity) exception等

一、Spring Boot项目创建

 在IDEA中点击 NEW->Project->Spring Boot 开始创建 Spring Boot 项目,Type选择Maven,JDK版本选择21,相关配置如图:

点击Next后选择Web中的Spring Web,SQL中的Spring Data JPA  和MySQL Driver后点击create

在本测试项目中,直接使用JPA作为DAO层技术支撑。 

二、Spring Boot 简单增删改查

1.开发前相关文件配置

新建项目首先确定各个层级代码包名,之后编辑对应propertIes文件

application.properties编辑信息(state_owned_assets_supervise是自建数据库名):

spring.application.name=Accountability
# 默认端口号8080,这里改为8088
server.port=8088 
spring.datasource.url=jdbc:mysql://localhost:3306/state_owned_assets_supervise?serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver#show
spring.jpa.show-sql=true
#format_sql
spring.jpa.properties.hibernate.format_sql=true
#auto update db table struct
spring.jpa.hibernate.ddl-auto=update

相关项目代码结构如图: 

2.编辑相关代码

直接点击启动 AccountabilityApplication类

相关代码结构如图:

在三层模型中,使用repository链接数据库对数据CRUD,之后Service层调用数据访问层进行组合,controller层调用Service层获得结果后返回给前台。 

由于使用的是JPA可以直接新建实体类通过实体类自动在MySQL中建表。代码如下:

package org.jac.accountability.pojo;import jakarta.persistence.*;@Table(name = "db_user")
@Entity
public class User {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)@Column(name = "user_id")private  Integer userId;@Column(name = "user_name")private  String userName;private  String password;private  String email;public Integer getUserId() {return userId;}public void setUserId(Integer userId) {this.userId = userId;}public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}@Overridepublic String toString() {return "User{" +"userId=" +userId+"userName" + userName+"password" +password+"email" +email+"}";}
}

相关注解:  

@Table(name = "db_user")  MySQL数据库中对应实体类名称为 db_user
@Entity 表明实体类
@Id  表明该ID字段为主键
@GeneratedValue(strategy = GenerationType.IDENTITY)  主键ID自增策略
@Column(name = "user_id") MySQL数据库字段使用蛇形命名,需要变更Java类中命名方式
strategy*          GenerationType.IDENTITY :自增,mysql 底层数据库必须支持自动增长(底层数据库支持的自动增长方式,对id自增)*          GenerationType.SEQUENCE : 序列,oracle 底层数据库必须支持序列*  GenerationType.TABLE : jpa提供的一种机制,通过一张数据库表的形式帮助我们完成主键自增*  GenerationType.AUTO : 由程序自动的帮助我们选择主键生成策略* @Column:配置属性和字段的映射关系* name:数据库表中字段的名称

2.1 编写controller层

import ....;@RestController  //对请求端返回JSON数据格式
@RequestMapping("/user") //localhost:8088/user/....
public class UserController { // rest crud//@Autowiredprivate UserService userService;@PostMappingpublic ResponseMessage add(@Validated @RequestBody UserDTO userDto) {User user = userService.addUser(userDto);return ResponseMessage.sucess(user) ;}//@GetMapping("/{userId}")public ResponseMessage get(@PathVariable Integer userId) {User user = userService.getUser(userId);return ResponseMessage.sucess(user) ;}//@PutMappingpublic ResponseMessage update(@Validated @RequestBody UserEditDTO userEditDTO) {User user = userService.editUser(userEditDTO);return ResponseMessage.sucess(user);}//@DeleteMapping("/{userId}")public ResponseMessage delete(@PathVariable Integer userId) {userService.deleteUser(userId);return ResponseMessage.sucess(null);}
}

 在 以上代码中,通过向外暴露不同类型http接口(post,get,put,delete)的方式实现增查改删。   涉及发送body内容(put,post)使用注解@RequestBody ; 通过路径中参数传值使用注解@PathVariable;参数校验使用注解 @Validated ;

@RestController //对请求端返回JSON数据格式处理

@RequestMapping("/user") //生成对应的URL localhost:8088/user/....

相关注解下的方法返回  类 ResponseMessage 统一返回message

2.2编写service层

import ...
@Service
public class  UserService implements IUserService {@Autowiredprivate UserRepository userRepository;@Overridepublic User addUser(UserDTO user) {User userPojo = new User();BeanUtils.copyProperties(user,userPojo);return userRepository.save(userPojo);}@Overridepublic User getUser(Integer userId) {return userRepository.findById(userId).orElseThrow(()->{throw new IllegalArgumentException("user not found") ;});}@Overridepublic User editUser(UserEditDTO user) {User userPojo = new User();BeanUtils.copyProperties(user,userPojo);return userRepository.save(userPojo);}@Overridepublic void deleteUser(Integer userId) {userRepository.deleteById(userId);}}
UserDTO 类和 UserEditDTO类内容一致,UserEditDTO比UserDTO 多一个ID 字段。BeanUtils.copyProperties(user,userPojo);使用该方法将传入的DTO内容复制到POJO中再通过使用DAO层处理数据。

2.3  统一返回消息 ResponseMessage

该类中定义一个方法

 public static <T> ResponseMessage<T> sucess(T data) {ResponseMessage response = new ResponseMessage();response.setCode(HttpStatus.OK.value());response.setMessage("success");response.setData(data);return response;}

controller类中使用该方法实现将统一返回的data封装后返回信息。 

2.4 repository层(DAO)

使用了JPA后直接继承类 后直接进行简单的增删改查 不必进行直接操作

public interface UserRepository extends CrudRepository<User,Integer> {User getUsersByUserId(Integer userId);
}

总结


http://www.mrgr.cn/news/90013.html

相关文章:

  • 探索robots.txt:网站管理者的搜索引擎指南
  • 用Kibana实现Elasticsearch索引的增删改查:实战指南
  • 【MQ】RabbitMQ 高可用延时功能的探究
  • (done) openMP学习 (Day12: Pairwise同步的陷阱)
  • 知识库升级新思路:用生成式AI打造智能知识助手
  • 【R语言】卡方检验
  • 【SQL教程|05】Mysql中Limit用法详解
  • 大疆前端开发面试题及参考答案(4万字长文)
  • 【R语言】卡方检验
  • HTML应用指南:利用GET请求获取全国盒马门店位置信息
  • 《Cherry Studio+DeepSeek+Whoosh:三剑合璧,打造高效AI知识库与全文搜索系统》
  • 【Spring】什么是Spring?
  • (六)C++的函数模板与类模板
  • camera系统之cameraprovider
  • 【CubeMX-HAL库】STM32F407—无刷电机学习笔记
  • 保研考研机试攻略:python笔记(4)
  • 【python】简单的flask做页面。一组字母组成的所有单词。这里的输入是一组字母,而输出是所有可能得字母组成的单词列表
  • 全程Kali linux---CTFshow misc入门(38-50)
  • 大数据学习之SparkSql
  • ZoomIt:提高演示效率的画板工具
  • leetcode_深度搜索和广度搜索 100. 相同的树
  • 【设计模式】【行为型模式】模板方法模式(Template Method)
  • (四)C++的类与动态内存分配
  • MySQL数据库(七)SQL 优化
  • C# Winform怎么设计串口,客户端和相机控件界面显示
  • Qt修仙之路2-1 仿QQ登入 法宝初成