共计 2671 个字符,预计需要花费 7 分钟才能阅读完成。
概述:
- Kotlin 为后端开发语言, 长久层是 Spring Data JPA
- 前后端拆散,进行简略增查改删(CRUD)
- 前端应用 VUE
- 数据库应用 MySQL
Vue 前端代码,不再反复。以下是 Kotlin 后盾代码
EmployeeController.kt
package com.example.kotlinjpacrud.controller
import com.example.kotlinjpacrud.entity.Employee
import com.example.kotlinjpacrud.repositories.EmployeeRepository
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.http.HttpStatus
import org.springframework.http.ResponseEntity
import org.springframework.web.bind.annotation.*
import javax.validation.Valid
@RestController
@RequestMapping("/api/employee")
class EmployeeController(private val employeeRepository: EmployeeRepository) {
/**
* 获取所有员工分页
* 以字段 Id 为降序
* 没有为 3 条记录
*/
@GetMapping
fun getAllEmployees(@PageableDefault(sort = ["id"], direction = Sort.Direction.DESC, size = 3) pageable: Pageable): Page<Employee> {return employeeRepository.findAll(pageable)
}
/**
* 新增员工
*/
@PostMapping
fun createEmployee(@Valid @RequestBody employee: Employee): Employee {return employeeRepository.save(employee)
}
/**
* 依据 ID 获取员工
*/
@GetMapping("/{id}")
fun getEmployeeById(@PathVariable(value = "id") employeeId: Long): ResponseEntity<Employee> {return employeeRepository.findById(employeeId)
.map {employee -> ResponseEntity.ok(employee) }
.orElse(ResponseEntity.notFound().build())
}
/**
* 批改员工
*/
@PutMapping
fun updateEmployeeById(@Valid @RequestBody newEmployee: Employee): ResponseEntity<Employee> {return employeeRepository.findById(newEmployee.id)
.map { existingArticle ->
val updatedArticle: Employee = existingArticle
.copy(name = newEmployee.name,
gender = newEmployee.gender,
age = newEmployee.age,
introduce = newEmployee.introduce)
ResponseEntity.ok().body(employeeRepository.save(updatedArticle))
}.orElse(ResponseEntity.notFound().build())
}
/**
* 依据 ID 删除
*/
@DeleteMapping("/{id}")
fun deleteEmployeeById(@PathVariable(value = "id") employeeId: Long): ResponseEntity<Void> {return employeeRepository.findById(employeeId)
.map { deleteEmployee ->
employeeRepository.delete(deleteEmployee)
ResponseEntity<Void>(HttpStatus.OK)
}.orElse(ResponseEntity.notFound().build())
}
}
Employee.kt
package com.example.kotlinjpacrud.entity
import com.example.kotlinjpacrud.enums.Gender
import javax.persistence.Entity
import javax.persistence.GeneratedValue
import javax.persistence.Id
@Entity
data class Employee(
@Id @GeneratedValue
var id: Long =0,
var name: String ="",
var gender: Gender = Gender.MALE,
var age: Int =0,
var introduce: String =""
)
EmployeeRepository.tk
package com.example.kotlinjpacrud.repositories
import com.example.kotlinjpacrud.entity.Employee
import org.springframework.data.jpa.repository.JpaRepository
import org.springframework.stereotype.Repository
@Repository
interface EmployeeRepository :JpaRepository<Employee,Long> {}
正文完