帮我用springboot、thymleaf、mariadb写一个购物车功能,包括html、controller、service、dao以及数据库
时间: 2023-07-10 21:36:59 浏览: 55
好的,我会为您提供一个简单的购物车功能的代码示例,包括html、controller、service、dao以及数据库。
1. 创建数据库和表
首先,我们需要创建一个名为`shopping_cart`的数据库,并在其中创建一个名为`items`的表,用于存储商品信息。表的结构如下:
```sql
CREATE TABLE `items` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) DEFAULT NULL,
`price` double DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;
```
2. 添加商品信息
我们可以手动向`items`表中添加一些商品信息,例如:
```sql
INSERT INTO `items` (`name`, `price`) VALUES
('item1', 10.0),
('item2', 20.0),
('item3', 30.0);
```
3. 创建Spring Boot项目
接下来,我们需要创建一个Spring Boot项目,并添加所需的依赖。在`pom.xml`中添加以下依赖:
```xml
<dependencies>
<!-- Spring Boot starter dependencies -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<!-- MariaDB driver dependency -->
<dependency>
<groupId>org.mariadb.jdbc</groupId>
<artifactId>mariadb-java-client</artifactId>
<version>2.7.2</version>
</dependency>
</dependencies>
```
4. 编写实体类
接下来,我们需要编写一个`Item`实体类,用于表示商品信息。代码如下:
```java
public class Item {
private int id;
private String name;
private double price;
// getter and setter methods
}
```
5. 创建DAO层
我们可以使用Spring Data JPA来简化数据访问层的开发。首先,我们需要创建一个`ItemRepository`接口,继承`JpaRepository`接口,以便继承Spring Data JPA提供的常用的CRUD方法。代码如下:
```java
public interface ItemRepository extends JpaRepository<Item, Integer> {
}
```
6. 创建Service层
接下来,我们需要创建一个`ItemService`类,用于处理业务逻辑。代码如下:
```java
@Service
public class ItemService {
@Autowired
private ItemRepository itemRepository;
public List<Item> findAll() {
return itemRepository.findAll();
}
public Item findById(int id) {
return itemRepository.findById(id).orElse(null);
}
}
```
7. 编写Controller层
最后,我们需要编写一个`ShoppingCartController`类,用于处理请求并返回结果。代码如下:
```java
@Controller
public class ShoppingCartController {
@Autowired
private ItemService itemService;
@GetMapping("/")
public String index(Model model) {
List<Item> items = itemService.findAll();
model.addAttribute("items", items);
return "index";
}
@GetMapping("/item/{id}")
public String item(@PathVariable int id, Model model) {
Item item = itemService.findById(id);
model.addAttribute("item", item);
return "item";
}
}
```
8. 编写HTML页面
最后,我们需要编写两个HTML页面,一个用于显示商品列表,另一个用于显示单个商品的详细信息。代码如下:
index.html
```html
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Shopping Cart</title>
</head>
<body>
<h1>Shopping Cart</h1>
<table>
<thead>
<tr>
<th>ID</th>
<th>Name</th>
<th>Price</th>
<th></th>
</tr>
</thead>
<tbody>
<tr th:each="item : ${items}">
<td th:text="${item.id}"></td>
<td th:text="${item.name}"></td>
<td th:text="${item.price}"></td>
<td><a th:href="@{/item/{id}(id=${item.id})}">Details</a></td>
</tr>
</tbody>
</table>
</body>
</html>
```
item.html
```html
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title th:text="${item.name}"></title>
</head>
<body>
<h1 th:text="${item.name}"></h1>
<p th:text="'Price: ' + ${item.price}"></p>
<a href="/">Back to shopping cart</a>
</body>
</html>
```
这样,我们就完成了购物车功能的代码编写。您可以在浏览器中访问`http://localhost:8080/`来查看商品列表,点击某个商品的“Details”链接,可以查看该商品的详细信息。