视频讲解:
https://www.bilibili.com/video/BV16i4y1G7i2/
工程概述:
- 前后端分离,进行简单增查改删(CRUD)
- 前端使用VUE
- 后端使用Spring Data JPA
- 数据库使用MySQL
EmployeeController.java
package com.deepincoding.springdatajpamysqlcrud.controller;import com.deepincoding.springdatajpamysqlcrud.entity.Employee;import com.deepincoding.springdatajpamysqlcrud.model.BaseResponse;import com.deepincoding.springdatajpamysqlcrud.service.EmployeeService;import lombok.extern.log4j.Log4j2;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.data.domain.Page;import org.springframework.data.domain.Pageable;import org.springframework.data.domain.Sort;import org.springframework.data.web.PageableDefault;import org.springframework.web.bind.annotation.*;import java.util.Optional;@RestController@RequestMapping("/api/employee")@Log4j2public class EmployeeController extends BaseController { @Autowired private EmployeeService employeeService; @PostMapping public BaseResponse<String> save(@RequestBody Employee employee){ employeeService.save(employee); return new BaseResponse<>(SUCCESS,"保存成功"); } @GetMapping("/{id}") public BaseResponse<Optional<Employee>> findById(@PathVariable Long id){ Optional<Employee> employee = employeeService.findById(id); return new BaseResponse<>(SUCCESS,"获取成功",employee); } @GetMapping public BaseResponse<Page<Employee>> findAll(@PageableDefault(sort = {"id"},direction = Sort.Direction.DESC ,size = 3) Pageable pageable){ log.info("pageable:{}",pageable.getPageNumber()); Page<Employee> employees = employeeService.findAll(pageable); return new BaseResponse<>(SUCCESS,"获取成功",employees); } @PutMapping public BaseResponse<String> update(@RequestBody Employee employee){ employeeService.save(employee); return new BaseResponse<>(SUCCESS,"修改成功"); } @DeleteMapping("/{id}") public BaseResponse<String> delete(@PathVariable Long id){ employeeService.delete(id); return new BaseResponse<>(SUCCESS,"删除成功"); }}
CorsConfig.java
package com.deepincoding.springdatajpamysqlcrud.config;import org.springframework.context.annotation.Configuration;import org.springframework.web.servlet.config.annotation.CorsRegistry;import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;@Configurationpublic class CorsConfig implements WebMvcConfigurer { /** * 跨域配置 * @param registry */ @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowedOrigins("*") .allowedMethods("*"); }}
Employee.java
package com.deepincoding.springdatajpamysqlcrud.entity;import com.deepincoding.springdatajpamysqlcrud.enums.Gender;import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor;import javax.persistence.*;@Entity@Data@NoArgsConstructor@AllArgsConstructorpublic class Employee { @Id @GeneratedValue(strategy= GenerationType.AUTO) private long id; private String name; @Enumerated(EnumType.STRING) private Gender gender; private Integer age; private String introduce;}
EmployeeServiceImpl.java
package com.deepincoding.springdatajpamysqlcrud.service;import com.deepincoding.springdatajpamysqlcrud.entity.Employee;import com.deepincoding.springdatajpamysqlcrud.repositories.EmployeeRep;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.data.domain.Page;import org.springframework.stereotype.Service;import org.springframework.data.domain.Pageable;import java.util.Optional;@Servicepublic class EmployeeServiceImpl implements EmployeeService{ @Autowired private EmployeeRep employeeRep; @Override public void save(Employee employee) { employeeRep.save(employee); } @Override public Optional<Employee> findById(Long id) { return employeeRep.findById(id); } @Override public void update(Employee employee) { employeeRep.save(employee); } @Override public void delete(Long id) { employeeRep.deleteById(id); } @Override public Page<Employee> findAll(Pageable pageable) { return employeeRep.findAll(pageable); }}
本文使用 mdnice 排版