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());
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?