概述:

  1. Kotlin为后端开发语言,长久层是Spring Data JPA
  2. 前后端拆散,进行简略增查改删(CRUD)
  3. 前端应用VUE
  4. 数据库应用MySQL

Vue前端代码,不再反复。以下是Kotlin后盾代码

EmployeeController.kt


package com.example.kotlinjpacrud.controllerimport com.example.kotlinjpacrud.entity.Employeeimport com.example.kotlinjpacrud.repositories.EmployeeRepositoryimport org.springframework.data.domain.Pageimport org.springframework.data.domain.Pageableimport org.springframework.data.domain.Sortimport org.springframework.data.web.PageableDefaultimport org.springframework.http.HttpStatusimport org.springframework.http.ResponseEntityimport 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.entityimport com.example.kotlinjpacrud.enums.Genderimport javax.persistence.Entityimport javax.persistence.GeneratedValueimport javax.persistence.Id@Entitydata 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.repositoriesimport com.example.kotlinjpacrud.entity.Employeeimport org.springframework.data.jpa.repository.JpaRepositoryimport org.springframework.stereotype.Repository@Repositoryinterface EmployeeRepository :JpaRepository<Employee,Long> {}