JPA實現數據的更新操作


JPA實現數據的更新操作

entity

@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
@DynamicInsert
@DynamicUpdate
@Access(AccessType.FIELD)
@Table(catalog = "sc", name = "t_student")
public class Student {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    private Integer id;

    @Column(name = "name")
    private String name;

    @Column(name = "age")
    private Integer age;
}

方式一 : 通過 jpa提供的save方法實現更新

repository

public interface StudentRepository extends JpaRepository<Student,Integer> {
}

StudentServiceImpl

@Service
public class StudentServiceImpl implements StudentService {

    @Autowired
    private StudentRepository studentRepository;

    @Override
    public void updateStudent(StudentDto studentDto) {
        // 前提: 能通過id查找到對應行數據
        Optional<Student> op = studentRepository.findById(studentDto.getId());
        op.ifPresent(student -> {
            student.setName("newName");
            studentRepository.save(student);
        });
    }
}

方式二: 通過jql實現更新

repository

@Repository
public interface StudentRepository extends JpaRepository<Student, Integer> {

    @Transactional // 數據修改和刪除,需要顯示聲明事務 ,直接在接口方法上添加注解 或者在調用的方法上添加注解
    @Modifying
    @Query("update Student s set s.name =:name where s.id=:id")
    void updateStudent(String name, Integer id);// 注意:定義更新方法 返回值只能是void或者int,不然會報錯
}

StudentServiceImpl

@Service
public class StudentServiceImpl implements StudentService {

    @Autowired
    private StudentRepository studentRepository;

    @Override
    public void updateStudent(StudentDto studentDto) {
        studentRepository.updateStudent("newName2",studentDto.getId());
    }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM