写一个前后端分离,完成数据库的增删改查
时间: 2024-03-28 13:03:04 浏览: 25
好的,我可以为您提供一个简单的实现方案,但需要您提供一些具体需求和技术栈。
首先,前端需要使用一个框架(如Vue、React等)来完成UI界面的设计,同时进行数据的请求和展示。后端则需要使用一种服务器端语言(如Java、Python等)和一个数据库(如MySQL、MongoDB等)来处理请求和存储数据。
以下是一个通用的实现步骤:
1. 前端:设计UI界面,使用前端框架进行开发,如Vue。
2. 前端:使用Axios等工具,发送HTTP请求到后端API接口,获取数据并展示。
3. 后端:使用服务器端语言和框架,如Node.js、Express.js等,搭建API接口。
4. 后端:使用ORM框架(如Sequelize、Mongoose等)连接数据库,实现增删改查操作。
5. 前端和后端:进行数据交互,实现前后端分离。
具体实现细节还需要根据您的具体需求和技术栈来确定,希望能对您有所帮助。
相关问题
使用springboot搭建一个简单的增删改查前后端分离页面
好的,下面我来为您介绍使用Spring Boot搭建增删改查前后端分离页面的步骤:
1. 创建Spring Boot项目
首先,在IDE中创建一个Spring Boot项目,我们可以使用Spring Initializr来快速创建一个基础的Spring Boot项目。
2. 添加依赖
在pom.xml文件中,添加如下依赖:
```xml
<!-- Spring Boot Web依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Spring Boot MyBatis依赖 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.0.1</version>
</dependency>
<!-- MySQL数据库依赖 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.26</version>
</dependency>
```
3. 创建实体类
在src/main/java目录下创建一个名为"com.example.demo.entity"的包,然后创建一个实体类,例如:
```java
package com.example.demo.entity;
public class User {
private Long id;
private String name;
private Integer age;
// 省略getter和setter方法
}
```
4. 创建Mapper接口和XML文件
在src/main/java目录下创建一个名为"com.example.demo.mapper"的包,然后创建一个Mapper接口,例如:
```java
package com.example.demo.mapper;
import com.example.demo.entity.User;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface UserMapper {
List<User> findAll();
User findById(Long id);
void insert(User user);
void update(User user);
void delete(Long id);
}
```
在resources目录下创建一个名为"mapper"的文件夹,然后在其中创建一个XML文件,例如:
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.demo.mapper.UserMapper">
<resultMap id="UserMap" type="com.example.demo.entity.User">
<id column="id" property="id"/>
<result column="name" property="name"/>
<result column="age" property="age"/>
</resultMap>
<select id="findAll" resultMap="UserMap">
select * from user
</select>
<select id="findById" resultMap="UserMap">
select * from user where id = #{id}
</select>
<insert id="insert">
insert into user(name, age) values(#{name}, #{age})
</insert>
<update id="update">
update user set name = #{name}, age = #{age} where id = #{id}
</update>
<delete id="delete">
delete from user where id = #{id}
</delete>
</mapper>
```
5. 创建Service接口和实现类
在src/main/java目录下创建一个名为"com.example.demo.service"的包,然后创建一个Service接口,例如:
```java
package com.example.demo.service;
import com.example.demo.entity.User;
import java.util.List;
public interface UserService {
List<User> findAll();
User findById(Long id);
void insert(User user);
void update(User user);
void delete(Long id);
}
```
然后创建一个Service实现类,例如:
```java
package com.example.demo.service.impl;
import com.example.demo.entity.User;
import com.example.demo.mapper.UserMapper;
import com.example.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public List<User> findAll() {
return userMapper.findAll();
}
@Override
public User findById(Long id) {
return userMapper.findById(id);
}
@Override
public void insert(User user) {
userMapper.insert(user);
}
@Override
public void update(User user) {
userMapper.update(user);
}
@Override
public void delete(Long id) {
userMapper.delete(id);
}
}
```
6. 创建Controller
在src/main/java目录下创建一个名为"com.example.demo.controller"的包,然后创建一个Controller,例如:
```java
package com.example.demo.controller;
import com.example.demo.entity.User;
import com.example.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/")
public List<User> findAll() {
return userService.findAll();
}
@GetMapping("/{id}")
public User findById(@PathVariable Long id) {
return userService.findById(id);
}
@PostMapping("/")
public void insert(@RequestBody User user) {
userService.insert(user);
}
@PutMapping("/")
public void update(@RequestBody User user) {
userService.update(user);
}
@DeleteMapping("/{id}")
public void delete(@PathVariable Long id) {
userService.delete(id);
}
}
```
7. 编写前端页面
在src/main/resources/static目录下创建一个名为"index.html"的文件,例如:
```html
<!DOCTYPE html>
<html>
<head>
<title>User Management</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<h2>User Management</h2>
<table>
<thead>
<tr>
<th>ID</th>
<th>Name</th>
<th>Age</th>
<th>Action</th>
</tr>
</thead>
<tbody id="userList">
</tbody>
</table>
<br>
<form>
<label>Name:</label>
<input type="text" id="name" name="name">
<br>
<label>Age:</label>
<input type="number" id="age" name="age">
<br>
<button type="button" onclick="insert()">Add User</button>
</form>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script>
$(document).ready(function() {
findAll();
});
function findAll() {
$.get("/user/", function(data) {
$("#userList").empty();
$.each(data, function(index, user) {
var row = "<tr><td>" + user.id + "</td><td>" + user.name + "</td><td>" + user.age + "</td><td><button type='button' onclick='findById(" + user.id + ")'>Edit</button><button type='button' onclick='deleteUser(" + user.id + ")'>Delete</button></td></tr>";
$("#userList").append(row);
})
});
}
function findById(id) {
$.get("/user/" + id, function(user) {
$("#name").val(user.name);
$("#age").val(user.age);
$("#id").val(user.id);
});
}
function insert() {
var name = $("#name").val();
var age = $("#age").val();
var user = {name: name, age: age};
$.ajax({
type: "POST",
url: "/user/",
data: JSON.stringify(user),
contentType: "application/json;charset=utf-8",
dataType: "json",
success: function() {
alert("Insert Successfully");
findAll();
$("#name").val("");
$("#age").val("");
}
});
}
function update() {
var id = $("#id").val();
var name = $("#name").val();
var age = $("#age").val();
var user = {id: id, name: name, age: age};
$.ajax({
type: "PUT",
url: "/user/",
data: JSON.stringify(user),
contentType: "application/json;charset=utf-8",
dataType: "json",
success: function() {
alert("Update Successfully");
findAll();
$("#name").val("");
$("#age").val("");
}
});
}
function delete(id) {
$.ajax({
type: "DELETE",
url: "/user/" + id,
success: function() {
alert("Delete Successfully");
findAll();
}
});
}
</script>
</body>
</html>
```
这样,一个简单的增删改查前后端分离页面就完成了。您可以使用浏览器访问"http://localhost:8080"来查看效果。
帮我用PHP写一个增删改查的源码程序,前后端分离
当可以!以下是一个简单的增删改查的源码程序,使用PHP语言和MySQL数据库,采用前后端分离的方式。
后端代码:
连接数据库:
```php
<?php
$hostname = "localhost"; // 数据库服务器地址
$username = "用户名"; // 数据库用户名
$password = "密码"; // 数据库密码
$database = "数据库名"; // 数据库名
// 创建连接
$conn = mysqli_connect($hostname, $username, $password, $database);
// 检查连接是否成功
if (!$conn) {
die("连接失败: " . mysqli_connect_error());
}
?>
```
增加数据:
```php
<?php
// 获取请求的JSON数据
$data = json_decode(file_get_contents('php://input'), true);
// 获取表单数据
$name = $data['name'];
$email = $data['email'];
$phone = $data['phone'];
// SQL 插入语句
$sql = "INSERT INTO contacts (name, email, phone) VALUES ('$name', '$email', '$phone')";
if (mysqli_query($conn, $sql)) {
$response = array('success' => true, 'message' => '数据添加成功!');
echo json_encode($response);
} else {
$response = array('success' => false, 'message' => '数据添加失败!');
echo json_encode($response);
}
mysqli_close($conn);
?>
```
删除数据:
```php
<?php
// 获取要删除的数据的 ID
$id = $_GET['id'];
// SQL 删除语句
$sql = "DELETE FROM contacts WHERE id=$id";
if (mysqli_query($conn, $sql)) {
$response = array('success' => true, 'message' => '数据删除成功!');
echo json_encode($response);
} else {
$response = array('success' => false, 'message' => '数据删除失败!');
echo json_encode($response);
}
mysqli_close($conn);
?>
```
修改数据:
```php
<?php
// 获取请求的JSON数据
$data = json_decode(file_get_contents('php://input'), true);
// 获取表单数据和要修改的数据的 ID
$id = $data['id'];
$name = $data['name'];
$email = $data['email'];
$phone = $data['phone'];
// SQL 更新语句
$sql = "UPDATE contacts SET name='$name', email='$email', phone='$phone' WHERE id=$id";
if (mysqli_query($conn, $sql)) {
$response = array('success' => true, 'message' => '数据更新成功!');
echo json_encode($response);
} else {
$response = array('success' => false, 'message' => '数据更新失败!');
echo json_encode($response);
}
mysqli_close($conn);
?>
```
查询数据:
```php
<?php
// SQL 查询语句
$sql = "SELECT * FROM contacts";
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0) {
// 输出每行数据
$rows = array();
while($row = mysqli_fetch_assoc($result)) {
$rows[] = $row;
}
echo json_encode($rows);
} else {
$response = array('success' => false, 'message' => '没有数据!');
echo json_encode($response);
}
mysqli_close($conn);
?>
```
前端代码:
HTML:
```html
<!DOCTYPE html>
<html>
<head>
<title>增删改查</title>
</head>
<body>
<h1>联系人列表</h1>
<table>
<thead>
<tr>
<th>ID</th>
<th>姓名</th>
<th>电子邮件</th>
<th>电话</th>
<th>操作</th>
</tr>
</thead>
<tbody id="tableBody"></tbody>
</table>
<h1>添加联系人</h1>
<form id="addForm">
<label for="name">姓名</label>
<input type="text" name="name" id="name">
<br>
<label for="email">电子邮件</label>
<input type="text" name="email" id="email">
<br>
<label for="phone">电话</label>
<input type="text" name="phone" id="phone">
<br>
<button type="submit">添加</button>
</form>
<h1>修改联系人</h1>
<form id="editForm">
<input type="hidden" name="id" id="editId">
<label for="editName">姓名</label>
<input type="text" name="name" id="editName">
<br>
<label for="editEmail">电子邮件</label>
<input type="text" name="email" id="editEmail">
<br>
<label for="editPhone">电话</label>
<input type="text" name="phone" id="editPhone">
<br>
<button type="submit">保存</button>
</form>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
<script>
var app = new Vue({
el: '#app',
data: {
contacts: [],
editContact: null
},
mounted: function() {
this.refreshContacts();
},
methods: {
refreshContacts: function() {
axios.get('api/contacts.php')
.then(function(response) {
app.contacts = response.data;
})
.catch(function(error) {
console.log(error);
});
},
addContact: function() {
var name = document.getElementById('name').value;
var email = document.getElementById('email').value;
var phone = document.getElementById('phone').value;
axios.post('api/add-contact.php', {
name: name,
email: email,
phone: phone
})
.then(function(response) {
alert(response.data.message);
app.refreshContacts();
document.getElementById('addForm').reset();
})
.catch(function(error) {
console.log(error);
});
},
deleteContact: function(id) {
if (confirm('确定要删除吗?')) {
axios.get('api/delete-contact.php?id=' + id)
.then(function(response) {
alert(response.data.message);
app.refreshContacts();
})
.catch(function(error) {
console.log(error);
});
}
},
editContactForm: function(contact) {
this.editContact = contact;
document.getElementById('editId').value = contact.id;
document.getElementById('editName').value = contact.name;
document.getElementById('editEmail').value = contact.email;
document.getElementById('editPhone').value = contact.phone;
},
editContactSubmit: function() {
var id = document.getElementById('editId').value;
var name = document.getElementById('editName').value;
var email = document.getElementById('editEmail').value;
var phone = document.getElementById('editPhone').value;
axios.post('api/edit-contact.php', {
id: id,
name: name,
email: email,
phone: phone
})
.then(function(response) {
alert(response.data.message);
app.refreshContacts();
app.editContact = null;
document.getElementById('editForm').reset();
})
.catch(function(error) {
console.log(error);
});
}
}
});
</script>
</body>
</html>
```
注意:需要使用Vue.js和Axios.js库。
希望这个简单的增删改查的源码程序能够帮助到你!
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)