Java 如何在spring boot应用程序中更新记录?
我试图在spring boot应用程序中更新记录,但它添加了一个新记录,而不是更新,我还想搜索Java 如何在spring boot应用程序中更新记录?,java,spring,spring-boot,hibernate,spring-mvc,Java,Spring,Spring Boot,Hibernate,Spring Mvc,我试图在spring boot应用程序中更新记录,但它添加了一个新记录,而不是更新,我还想搜索 import java.sql.Timestamp; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.T
import java.sql.Timestamp;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Transient;
@Entity
public class Events {
private Long id;
private String game;
private String catergory;
private String venue;
private float entrance_fee;
private String date;
private String time;
private Timestamp created_time;
private String image;
public Events() {
super();
// TODO Auto-generated constructor stub
}
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getGame() {
return game;
}
public void setGame(String game) {
this.game = game;
}
public String getCatergory() {
return catergory;
}
public void setCatergory(String catergory) {
this.catergory = catergory;
}
public String getVenue() {
return venue;
}
public void setVenue(String venue) {
this.venue = venue;
}
public float getEntrance_fee() {
return entrance_fee;
}
public void setEntrance_fee(float entrance_fee) {
this.entrance_fee = entrance_fee;
}
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
public String getTime() {
return time;
}
public void setTime(String time) {
this.time = time;
}
public Timestamp getCreated_time() {
return created_time;
}
public void setCreated_time(Timestamp created_time) {
this.created_time = created_time;
}
public String getImage() {
return image;
}
public void setImage(String image) {
this.image = image;
}
@Transient
public String getImagePath() {
if(image == null || id == null) return null;
return "/event-images/" + id + "/" + image;
}
}
这是我的存储库
import java.util.List;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface EventsRepository extends PagingAndSortingRepository<Events, Long> {
List<Events> findByCatergoryLike(String catergory);
}
最后是更新表单
<form action="#" th:action="@{/update_event}" th:object="${Edit_events}" method="post"
enctype="multipart/form-data">
<div id="name">
<h2 class="name">Sports</h2>
<input class="firstname" type="text" th:field="*{game}" /><br>
<input class="lastname" type="text" th:field="*{catergory}" /><br>
</div>
<h2 class="name">Venue</h2>
<input class="username" type="text" th:field="*{venue}" />
<h2 class="name">Entrance Fee</h2>
<input class="email" type="text" th:field="*{entrance_fee}" />
<h2 class="name">Date & Time</h2>
<input type="date" class="password" th:field="*{date}" />
<input type="time" class="number" th:field="*{time}" /><br>
<img th:src="*{imagePath}">
<input type="file" class="photoBtn" name="fileImage" id="fileImage" accept="image/png,
image/jpeg"/> <button type="submit">SAVE CHANGES</button><a th:href="@{/events}">..DISCARD..</a>
</form>
体育
地点
入场费
日期和时间
保存更改
解决方案非常简单,您需要先获取记录,然后使用save(events)更新它
例如:在请求负载中,您获取事件类的对象,使用eventsRepository.findById(events.id)
JPA存储库调用获取数据,然后更新返回的实例,然后保存它,内部JPA检查条目是否已注册。如果是,则将更新,否则将创建一个新条目
` Optinal<Events>currentEvent = eventsRepository.findById(events.id); if(currentEvent.isPresent()){// map the input values with currentEventusing mapper eventsRepository.save(events) }`
OptinalcurrentEvent=eventsRepository.findById(events.id);if(currentEvent.isPresent()){//使用映射器eventsRepository.save(events)将输入值映射到currentEvent}`
<>希望对更新记录有帮助的您必须从DB获取数据并更新它,并使用SAVER()方法在DBPlease插入更新的数据,花时间到<代码>格式<代码>您的代码(并考虑将代码减少到与回答您的问题相关的代码)。谢谢您,先生,但是现在它说:longic类型的方法参数缺少URI模板变量'id'。如果您想要@PathVariable,您需要在@RequestMapping条目中指定占位符,告诉Spring路径变量在URI中的位置,例如:/update_event/{id}
<form action="#" th:action="@{/update_event}" th:object="${Edit_events}" method="post"
enctype="multipart/form-data">
<div id="name">
<h2 class="name">Sports</h2>
<input class="firstname" type="text" th:field="*{game}" /><br>
<input class="lastname" type="text" th:field="*{catergory}" /><br>
</div>
<h2 class="name">Venue</h2>
<input class="username" type="text" th:field="*{venue}" />
<h2 class="name">Entrance Fee</h2>
<input class="email" type="text" th:field="*{entrance_fee}" />
<h2 class="name">Date & Time</h2>
<input type="date" class="password" th:field="*{date}" />
<input type="time" class="number" th:field="*{time}" /><br>
<img th:src="*{imagePath}">
<input type="file" class="photoBtn" name="fileImage" id="fileImage" accept="image/png,
image/jpeg"/> <button type="submit">SAVE CHANGES</button><a th:href="@{/events}">..DISCARD..</a>
</form>
` Optinal<Events>currentEvent = eventsRepository.findById(events.id); if(currentEvent.isPresent()){// map the input values with currentEventusing mapper eventsRepository.save(events) }`