请你帮我用spring从数据库获取数据并以表格的形式显示在html页面上,且表格中的元素双击可以编辑并同步更新到数据库中,表格有单独的更新按钮和删除按钮
时间: 2024-03-20 07:45:28 浏览: 72
将数据表里需要显示的数据以表格的形式显示在网页上
3星 · 编辑精心推荐
好的,我可以为您提供一个初步的思路。首先,您需要在Spring中配置数据源和JdbcTemplate来连接数据库并执行SQL语句。然后,您需要编写一个Controller来响应HTML页面的请求,并将数据从数据库检索到一个列表中。接下来,您需要使用Thymeleaf模板引擎来渲染HTML页面并将数据传递给HTML页面。最后,您需要编写JavaScript代码来实现编辑、更新和删除按钮的行为,并将修改后的数据发送回服务器以更新数据库。
以下是一个简单的示例Controller:
```java
@Controller
public class DataController {
@Autowired
private JdbcTemplate jdbcTemplate;
@GetMapping("/data")
public String getData(Model model) {
List<Data> dataList = jdbcTemplate.query(
"SELECT * FROM data",
(rs, rowNum) -> new Data(rs.getLong("id"), rs.getString("name"), rs.getString("value"))
);
model.addAttribute("dataList", dataList);
return "data";
}
@PostMapping("/update")
@ResponseBody
public String updateData(@RequestBody Data data) {
jdbcTemplate.update(
"UPDATE data SET name = ?, value = ? WHERE id = ?",
data.getName(), data.getValue(), data.getId()
);
return "success";
}
@PostMapping("/delete")
@ResponseBody
public String deleteData(@RequestParam Long id) {
jdbcTemplate.update(
"DELETE FROM data WHERE id = ?",
id
);
return "success";
}
}
```
在这个示例控制器中,我们首先使用JdbcTemplate从数据库中获取数据,并将其存储在列表中。然后,我们将该列表添加到Model中,并将其传递给Thymeleaf模板引擎进行渲染。接下来,我们提供两个POST请求,一个用于更新数据,另一个用于删除数据。更新和删除请求都需要从HTML页面中发送数据,并使用JdbcTemplate执行相应的SQL语句。
接下来,我们需要编写HTML页面并使用Thymeleaf将数据渲染到表格中。以下是一个简单的HTML页面:
```html
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Data</title>
<script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
<script>
$(function () {
$("td").dblclick(function () {
var td = $(this);
var input = $("<input type='text' value='" + td.text() + "'/>");
td.html(input);
input.blur(function () {
var input = $(this);
var td = input.parent();
$.post("/update", {
id: td.parent().data("id"),
name: td.parent().find(".name").text(),
value: td.parent().find(".value").text()
}, function (data) {
td.html(input.val());
})
});
input.focus();
});
$(".update").click(function () {
var button = $(this);
$.post("/update", {
id: button.parent().parent().data("id"),
name: button.parent().parent().find(".name").text(),
value: button.parent().parent().find(".value").text()
}, function (data) {
alert("Updated successfully!");
})
});
$(".delete").click(function () {
var button = $(this);
$.post("/delete", {
id: button.parent().parent().data("id")
}, function (data) {
button.parent().parent().remove();
alert("Deleted successfully!");
})
});
});
</script>
</head>
<body>
<table>
<thead>
<tr>
<th>ID</th>
<th>Name</th>
<th>Value</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<tr th:each="data : ${dataList}" th:data-id="${data.id}">
<td th:text="${data.id}"></td>
<td class="name" th:text="${data.name}"></td>
<td class="value" th:text="${data.value}"></td>
<td>
<button class="update">Update</button>
<button class="delete">Delete</button>
</td>
</tr>
</tbody>
</table>
</body>
</html>
```
在HTML页面中,我们首先导入jQuery库,并编写JavaScript代码来实现编辑、更新和删除按钮的行为。在表格中,我们使用Thymeleaf迭代数据列表,并将每个数据行的ID存储在data-id属性中。我们还为每个数据单元格添加了class属性,以便在JavaScript代码中引用。当用户双击单元格时,我们将其转换为文本框,并在用户完成输入后将其返回为单元格。当用户单击更新按钮时,我们将当前行的数据发送回服务器,并在成功更新后显示成功消息。当用户单击删除按钮时,我们将当前行的ID发送回服务器,并在成功删除后从表格中删除该行。
这只是一个初步的思路,您可以根据实际需求进行更改和扩展。希望对您有所帮助!
阅读全文