{{wikiTitle}}
新增功能模块
目录:
新增功能模块
从创建数据表到实现最基础增删改查的实现过程
很多使用了JAVA单商户系统的童鞋在进行二开的时候,都会遇到新建了数据表之后不知道对数据表怎么进行操作。那么,这篇文章将带你完整的实现一遍,以后就不会怕啦。
一、创建数据表
SQL 脚本示例:
CREATE TABLE student (
id INT PRIMARY KEY AUTO_INCREMENT COMMENT '主键',
name VARCHAR(50) NOT NULL COMMENT '姓名',
age INT COMMENT '年龄',
gender TINYINT COMMENT '性别(0:女, 1:男)',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
is_deleted TINYINT DEFAULT 0 COMMENT '软删除标记(0:未删除, 1:已删除)'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学生表';
二、创建实体类(Model)
目录: src/main/java/com/zbkj/admin/entity
文件: Student.java
import lombok.Data;
import org.hibernate.annotations.SQLDelete;
import org.hibernate.annotations.Where;
import javax.persistence.*;
import java.time.LocalDateTime;
@Data
@Entity
@Table(name = "student")
@SQLDelete(sql = "UPDATE student SET is_deleted = 1 WHERE id = ?") // 软删除注解
@Where(clause = "is_deleted = 0") // 默认过滤已删除数据
public class Student {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Column(name = "name", nullable = false, length = 50)
private String name;
@Column(name = "age")
private Integer age;
@Column(name = "gender")
private Integer gender;
@Column(name = "create_time", updatable = false)
private LocalDateTime createTime;
@Column(name = "is_deleted", insertable = false)
private Integer isDeleted;
}
说明:
使用 @ Entity 和 @ Table 映射数据库表。
@ SQLDelete 和 @ Where 实现软删除逻辑。
@ Column 注解定义字段属性。
三、创建 DAO 层(Repository)
目录: src/main/java/com/zbkj/admin/repository
文件: StudentRepository.java
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import com.zbkj.admin.entity.Student;
@Repository
public interface StudentRepository extends JpaRepository<Student, Integer> {
// 分页查询(继承默认方法)
Page<Student> findAll(Pageable pageable);
// 自定义条件查询(示例:按姓名模糊查询)
Page<Student> findByNameContaining(String name, Pageable pageable);
}
四、创建 Service 层
目录: src/main/java/com/zbkj/admin/service
接口文件: StudentService.java
import org.springframework.data.domain.Page;
import com.zbkj.admin.entity.Student;
public interface StudentService {
Student addStudent(Student student);
Student getStudentById(Integer id);
Page<Student> listStudents(int page, int size, String name);
Student updateStudent(Student student);
void deleteStudent(Integer id);
}
实现类文件: StudentServiceImpl.java
import com.zbkj.admin.repository.StudentRepository;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.stereotype.Service;
import javax.transaction.Transactional;
@Service
@Transactional
public class StudentServiceImpl implements StudentService {
private final StudentRepository studentRepository;
public StudentServiceImpl(StudentRepository studentRepository) {
this.studentRepository = studentRepository;
}
@Override
public Student addStudent(Student student) {
return studentRepository.save(student);
}
@Override
public Student getStudentById(Integer id) {
return studentRepository.findById(id)
.orElseThrow(() -> new RuntimeException("学生不存在"));
}
@Override
public Page<Student> listStudents(int page, int size, String name) {
PageRequest pageable = PageRequest.of(page, size);
if (name != null && !name.isEmpty()) {
return studentRepository.findByNameContaining(name, pageable);
} else {
return studentRepository.findAll(pageable);
}
}
@Override
public Student updateStudent(Student student) {
if (student.getId() == null) {
throw new RuntimeException("更新操作必须包含ID");
}
return studentRepository.save(student);
}
@Override
public void deleteStudent(Integer id) {
studentRepository.deleteById(id); // 物理删除
// 若需软删除,调用 studentRepository.softDeleteById(id);
}
}
五、创建 Controller 层
目录: src/main/java/com/zbkj/admin/controller
文件: StudentController.java
import org.springframework.web.bind.annotation.*;
import org.springframework.data.domain.Page;
import com.zbkj.admin.entity.Student;
import com.zbkj.admin.service.StudentService;
@RestController
@RequestMapping("/api/student")
public class StudentController {
private final StudentService studentService;
public StudentController(StudentService studentService) {
this.studentService = studentService;
}
@PostMapping
public Student addStudent(@RequestBody Student student) {
return studentService.addStudent(student);
}
@GetMapping("/{id}")
public Student getStudentById(@PathVariable Integer id) {
return studentService.getStudentById(id);
}
@GetMapping("/list")
public Page<Student> listStudents(
@RequestParam(defaultValue = "0") int page,
@RequestParam(defaultValue = "10") int size,
@RequestParam(required = false) String name
) {
return studentService.listStudents(page, size, name);
}
@PutMapping
public Student updateStudent(@RequestBody Student student) {
return studentService.updateStudent(student);
}
@DeleteMapping("/{id}")
public void deleteStudent(@PathVariable Integer id) {
studentService.deleteStudent(id);
}
}
职责说明:
entity.Student 数据表模型映射
repository.StudentRepository 数据库基础操作
service.StudentService 业务逻辑处理
controller.StudentController 接收请求,返回响应




评论({{cateWiki.comment_num}})
{{commentWhere.order ? '评论从旧到新':'评论从新到旧'}}
{{cateWiki.page_view_num}}人看过该文档


评论(0)
{{commentWhere.order ? '评论从旧到新':'评论从新到旧'}}
743人看过该文档




{{item.user ? item.user.nickname : ''}} (自评)
{{item.content}}
{{item.create_time}} 删除




搜索结果
为您找到{{wikiCount}}条结果
{{item.page_view_num}}
{{item.like ? item.like.like_num : 0}}
{{item.comment ? item.comment.comment_num : 0}}
位置:{{path.name}} {{(i+1) == item.catalogue.path_data.length ? '':'/'}}


