目录
2.1、新建项目,选择Spring Initializr,构建项目名称等信息
2.2、选择搭建项目骨架,添加依赖项Spring web、Lombok、MySQL Driver进行项目搭建
3.4、controller层 DeptController.java
3.5、service层 DeptServiceImpl.java(接口请自行补充)
一、结构概要
详:
二、项目创建
2.1、新建项目,选择Spring Initializr,构建项目名称等信息
2.2、选择搭建项目骨架,添加依赖项Spring web、Lombok、MySQL Driver进行项目搭建
2.3、可根据需求,酌情删除冗余文件
三、搭建三层架构
3.1、pom.xml文件添加对应依赖jar包
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.16</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.itweizi</groupId>
<artifactId>demo2</artifactId>
<version>0.0.1-SNAPSHOT</version>
<properties>
<java.version>11</java.version>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!---mybatis 起步依赖;-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.3.1</version>
</dependency>
<!--分页-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.4.6</version>
</dependency>
<!-- yml上显示自定义的配置信息-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
<version>2.7.15</version>
</dependency>
</dependencies>
</project>
3.2、application.yml配置文件
#数据源配置
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql:///db01
username: root
password: 1234
#问价上传大小限制
servert:
multipart:
max-file-size: 10MB
max-request-size: 100MB
#mybatis配置
mybatis:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
map-underscore-to-camel-case: true
#配xml文件的别名
type-aliases-package: com.itweizi.pojo
#日志控制
logging:
level:
org.springframework.jdbc.support.JdbcTransactionManager= debug:
#程序端口设置
server:
port:
8080
3.3、统一返回结构集Result类 + pojo实体类
3.3.1 、Result类
package com.itweizi.pojo;
import lombok.Data;
/**
* 后端统一返回结果
*/
@Data
public class Result {
private Integer code; //编码:1成功,0为失败
private String msg; //错误信息
private Object data; //数据
public static Result success() {
Result result = new Result();
result.code = 1;
result.msg = "success";
return result;
}
public static Result success(Object object) {
Result result = new Result();
result.data = object;
result.code = 1;
result.msg = "success";
return result;
}
public static Result error(String msg) {
Result result = new Result();
result.msg = msg;
result.code = 0;
return result;
}
}
3.3.2、实体类Dept
package com.itweizi.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.LocalDateTime;
@Data//自动生成 getter 和 setter 方法,以及 toString、equals 和 hashCode 方法。
@AllArgsConstructor//生成全参构造方法
@NoArgsConstructor//生成无参构造方法
public class Dept {
private Integer id;//部门id
private String name;//部门名称
private String createTime;//创建时间
private LocalDateTime updateTime;//修改时间
}
3.4、controller层 DeptController.java
package com.itweizi.controller;
import com.itweizi.pojo.Dept;
import com.itweizi.pojo.Result;
import com.itweizi.service.DeptService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
@RequestMapping("/depts")
public class DeptController {
@Autowired
private DeptService deptService;
//部门查询
@GetMapping
public Result list(){
List<Dept> list= deptService.list();
return Result.success(list);
}
// 新增部门数据
@PostMapping
public Result save(@RequestBody Dept dept){
deptService.save(dept);
return Result.success();
}
// 修改部门数据
//回显
@GetMapping("/{id}")
public Result getById(@PathVariable Integer id){
Dept dept = deptService.getById(id);
return Result.success(dept);
}
//修改
@PutMapping
public Result update(@RequestBody Dept dept){
deptService.update(dept);
return Result.success();
}
// 删除部门数据
@DeleteMapping
public Result deleteById(Integer id){
deptService.deleteById(id);
return Result.success();
}
}
3.5、service层 DeptServiceImpl.java(接口请自行补充)
package com.itweizi.service.impl;
import com.itweizi.mapper.DeptMapper;
import com.itweizi.pojo.Dept;
import com.itweizi.service.DeptService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class DeptServiceImpl implements DeptService {
@Autowired
private DeptMapper deptMapper;
//查询所有部门
@Override
public List<Dept> list() {
List<Dept> deptList = deptMapper.list();
return deptList;
}
//新增部门
@Override
public void save(Dept dept) {
//补充基础字段
dept.setCreateTime(LocalDateTime.now());
dept.setUpdateTime(LocalDateTime.now());
deptMapper.save(dept);
}
//回显数据
@Override
public Dept getById(Integer id) {
return deptMapper.getById(id);
}
//修改部门
@Override
public void update(Dept dept) {
deptMapper.update(dept);
}
//删除部门
@Override
public void deleteById(Integer id) {
deptMapper.deleteById(id);
}
}
3.6、mapper层
3.6.1、DeptMapper接口类
package com.itweizi.mapper;
import com.itweizi.pojo.Dept;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import java.util.List;
@Mapper
public interface DeptMapper {
//简单sql可加注解书写,复杂sql可在xml文件中进行实现
@Select("select * from db01.dept")
List<Dept> list();
@Delete("delete from db01.dept where id=#{id}")
void deleteById(Integer id);
@Insert("insert into db01.dept(id,name,create_time,update_time) value(#{id},#{name},#{createTime},#{updateTime})")
void save(Dept dept);
@Select("select * from db01.dept where id=#{id}")
Dept getById(Integer id);
//@Update("update db01.dept set name=#{name},update_time=#{updateTime} where id=#{id}")
void update(Dept dept);
}
3.6.2、DeptMapper.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.itweizi.mapper.DeptMapper">
//若较复杂sql在此处书写
//例:修改部门
<update id="update">
update dept
<set>
<if test="name !=null and name!=''">
name =#{name},
</if>
<if test="updateTime != null">
update_time=#{updateTime}
</if>
</set>
where id = #{id}
</update>
</mapper>
3.7、mysql数据表创建
-- auto-generated definition
create table dept
(
id int unsigned auto_increment comment '主键ID'
primary key,
name varchar(10) not null comment '部门名称',
create_time datetime null comment '创建时间',
update_time datetime null comment '修改时间',
constraint name
unique (name)
)
comment '部门表';
建议小贴士
1、若需展示前端页面,需要下载启动nginx进行反向代理,再浏览器访问链接http://localhost:90/
例:
2、若后端响应,可下载Apifox或Postman等其他工具,发送 HTTP 请求并进行 API 调试
例: