一 创作背景
随着版本的迭代,SpringBoot发布了3.x的版本,但是网上很多案例都是基于SpringBoot2.x的,对于3.x的案例相对较少,另外,就初学者而言,SpringBoot项目的文件和文件夹命名很多五花八门,并且不能够完全掌握。简而言之就是,跟着案例模板敲,可能会,但是也会出错爆红,并且一旦遇到报错,甚至不愿意百度查询错误原因。
二 内容概述
良好的习惯是成功的关键之一,在编写SpringBoot项目时,基础的文件夹和文件的命名也应当养成一个良好的习惯。接下来我们从SpringBoot3.x的项目创建到最后的编译执行做一个详细的介绍,中间不会穿插开发软件的安装和环境配置,因为idea作为一个很好用的Java编译软件,网上的安装教程很多,Navicat for MySQL亦然。为方便演示,本文章采用单模块方法。对于多模块的创建开发,网上有很多优秀的文章,大家可以作为参考。
三 创建SpringBoot3.x项目
1 软件环境
IDEA版本:2023.3.3
MySQL:5.7.10
Navicat:16.0.13
2 创建项目
打开IDEA,依次点击file-new-project,出现如下对话框,在对话框中找到Spring Initlalizr。
type选择maven,然后其他内容根据需要可做修改,点击next。
在上图中,可以选择SpringBoot版本,并勾选所需要的依赖,这里只勾选了spring web依赖,直接create。创建完成以后,删除掉项目中无用的文件,只留src、pom.xml即可。接下来打开pom文件,添加依赖。
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-spring-boot3-starter</artifactId>
<version>3.5.5</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.29</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.22</version>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.12</version>
</dependency>
修改配置文件,笔者采用的是properties风格。
server.port=8002
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/demo?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&useInformationSchema=true
spring.datasource.username=root
spring.datasource.password=123456
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
mybatis-plus.mapper-locations=classpath*:com/example/**/mapping/*.xml
利用Navicat创建数据库并新建一个user表。
3 修改项目
在新建的项目中分别创建controller、service、mapper、entity、param、enums文件夹,来存放对应的文件。
需要注意的是,文件夹采用小写字母开头,文件夹中的文件以大写字母开头,多个单词时采用驼峰命名法。一下是创建好的文件夹和对应的文件。
四 代码书写展示
1 entity
@Data
@TableName("user")
public class User {
@TableId(type = IdType.ASSIGN_ID)
private String id;
private String name;
private String type;
}
2 param
@Data
public class UserParam {
private String id;
private String name;
private String type;
}
3 mapper
public interface UserMapper extends BaseMapper<User> {
}
4 mapper.xml
<?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.example.demo.mapper.UserMapper">
</mapper>
5 enums
@Getter
public enum UserEnum {
SYSTEM_USER("系统用户"),
NORMAL_USER("普通用户");
private final String value;
UserEnum(String value) {
this.value = value;
}
}
6 service
public interface UserService extends IService<User> {
List<User> list(UserParam userParam);
void add(UserParam userParam);
void edit(UserParam userParam);
void delete(UserParam userParam);
}
7 serviceImpl
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
@Override
public List<User> list(UserParam userParam) {
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
if (ObjectUtil.isNotEmpty(userParam.getName())){
queryWrapper.lambda().like(User::getName,userParam.getName());
}
if (ObjectUtil.isNotEmpty(userParam.getType())){
queryWrapper.lambda().like(User::getType,userParam.getType());
}
return this.list(queryWrapper);
}
@Override
public void add(UserParam userParam) {
User user = BeanUtil.toBean(userParam, User.class);
this.save(user);
}
@Override
public void edit(UserParam userParam) {
User user = this.getById(userParam.getId());
BeanUtil.copyProperties(userParam,user);
this.updateById(user);
}
@Override
public void delete(UserParam userParam) {
this.removeById(userParam.getId());
}
}
8 controller
@RestController
public class UserController {
@Resource
private UserService userService;
//查询
@GetMapping("/list")
public List<User> list(UserParam userParam){
return userService.list(userParam);
}
//新增
@PostMapping("add")
public void add(@RequestBody UserParam userParam){
userService.add(userParam);
}
//修改
@PostMapping("edit")
public void edit(@RequestBody UserParam userParam){
userService.edit(userParam);
}
//删除
@PostMapping("delete")
public void delete(@RequestBody UserParam userParam){
userService.delete(userParam);
}
}
五 代码运行与调试
可以通过postman分别发送get和post请求,对接口内容进行测试。上述代码没有整合mybaits-plus的分页插件、代码生成器等,仅为初学者和准备做毕设的小伙伴提供基础的增删改查思路。