Springboot和Jpa实现学生CRUD操作代码实例

2020-03-18 20:02:43丽君

前期准备

使用idea新建个SpringBoot项目

在数据库中建student表

建包

1.编写entity包下实体类Student

(一个Javabean规范)

package com.example.stu.kudestu.stu.entity;

import javax.persistence.*;

@Entity
@Table(name = "student")
//@Entity 应用在实体类上  @Table(name = "student") 应用在实体类上,并且name属性为数据库表名
public class Student {
  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY) //ID自增
  private Integer id;
  private String name;
  private int age;
  private String sex;

  @Override
  public String toString() {
    return "Student{" +
        "id=" + id +
        ", name='" + name + ''' +
        ", age=" + age +
        ", sex='" + sex + ''' +
        '}';
  }

  public Student() {
  }

  public Integer getId() {
    return id;
  }

  public void setId(Integer id) {
    this.id = id;
  }

  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }

  public int getAge() {
    return age;
  }

  public void setAge(int age) {
    this.age = age;
  }

  public String getSex() {
    return sex;
  }

  public void setSex(String sex) {
    this.sex = sex;
  }
}

2.编写dao层StudentDao类

package com.example.stu.kudestu.stu.dao;

import com.example.stu.kudestu.stu.entity.Student;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;

import java.util.List;

public interface StudentDao extends JpaRepository<Student,Integer> {
//<Student,Integer>两个参数实体类和主键类型
  Student findStuById(Integer id);
 @Query(name="findStuByName",nativeQuery = true,value =
      "select * from student where name=:name ")
  List<Student> findStuByName(@Param("name") String name);
}

3.编写service层类StudentService,面象接口

import com.example.stu.kudestu.stu.entity.Student;
import org.springframework.data.domain.Page;
import java.util.List;


public interface StudentService {
  Student save(Student student);//添加学生
  Student update(Student student);//修改
  void delete(Integer id);//通过id删除学生
  Student findStuById(Integer id);//通过ID查找学生,接口中没有此方法,在StudentDao接口创建
  List<Student> findStuByName(String name);//通过学生姓名查找,在StudentDao接口创建

  /**
   * 分页查询所有数据
   * @param page //当前页
   * @param pageSize //每页记录数
   * @return
   */
  Page<Student> findAll(int page,int pageSize);

}

在service对接口实现

import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class StudentServiceimpl implements StudentService {

  @Autowired//用于类中的属性注入
  private StudentDao studentDao;


  @Override
  public Student save(Student student) {
    return studentDao.save(student);
  }

  @Override
  public Student update(Student student) {
    return studentDao.save(student);
  }

  @Override
  public void delete(Integer id) {
    studentDao.deleteById(id);
  }

  @Override
  public Student findStuById(Integer id) {
    return studentDao.findStuById(id);
  }

  @Override
  public List<Student> findStuByName(String name) {
    return studentDao.findStuByName(name);
  }

  @Override
  public Page<Student> findAll(int page,int pageSize) {
    Pageable pageable= PageRequest.of(page,pageSize);
    return studentDao.findAll(pageable);

  }
}