web项目一个页面新增要新增两个表的例子有吗
时间: 2023-08-05 16:04:53 浏览: 43
好的,下面是一个例子,假设我们的Web项目中需要新增一个页面,这个页面包括一个订单表和一个商品表,我们可以按照以下步骤进行操作:
1.创建表结构:在数据库中创建一个订单表和一个商品表,分别用来存储订单和商品的信息。
```
CREATE TABLE `order` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`order_no` varchar(255) NOT NULL,
`customer_name` varchar(255) NOT NULL,
`order_date` date NOT NULL,
PRIMARY KEY (`id`)
);
CREATE TABLE `product` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`price` decimal(10,2) NOT NULL,
PRIMARY KEY (`id`)
);
```
2.创建数据模型:在项目中创建Order和Product两个数据模型,分别对应于订单表和商品表,并且需要与数据库中的表进行映射。
```
@Entity
@Table(name = "order")
public class Order {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String orderNo;
private String customerName;
private Date orderDate;
// 省略getters和setters
}
@Entity
@Table(name = "product")
public class Product {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private BigDecimal price;
// 省略getters和setters
}
```
3.编写控制器和视图:根据新增页面的设计,编写OrderController和ProductController两个控制器,以及对应的视图,使用数据模型来访问数据库中的数据。
```
@Controller
public class OrderController {
@Autowired
private OrderRepository orderRepository;
@GetMapping("/order/new")
public String showNewOrderForm(Model model) {
model.addAttribute("order", new Order());
return "new-order";
}
@PostMapping("/order/new")
public String saveOrder(@ModelAttribute("order") Order order) {
orderRepository.save(order);
return "redirect:/order/list";
}
}
@Controller
public class ProductController {
@Autowired
private ProductRepository productRepository;
@GetMapping("/product/new")
public String showNewProductForm(Model model) {
model.addAttribute("product", new Product());
return "new-product";
}
@PostMapping("/product/new")
public String saveProduct(@ModelAttribute("product") Product product) {
productRepository.save(product);
return "redirect:/product/list";
}
}
```
4.实现数据的保存:在控制器中实现数据的保存,需要将订单数据和商品数据分别保存到对应的数据库表中。
```
@PostMapping("/order/new")
public String saveOrder(@ModelAttribute("order") Order order) {
orderRepository.save(order);
return "redirect:/order/list";
}
@PostMapping("/product/new")
public String saveProduct(@ModelAttribute("product") Product product) {
productRepository.save(product);
return "redirect:/product/list";
}
```
5.实现事务操作:为了保证数据的一致性和完整性,需要在控制器中实现事务操作,即在保存数据的过程中,如果其中一个操作失败,需要将整个事务回滚,保证数据的完整性。
```
@PostMapping("/order/new")
@Transactional
public String saveOrder(@ModelAttribute("order") Order order) {
orderRepository.save(order);
throw new RuntimeException("test transaction rollback"); // 模拟异常
}
@PostMapping("/product/new")
@Transactional
public String saveProduct(@ModelAttribute("product") Product product) {
productRepository.save(product);
throw new RuntimeException("test transaction rollback"); // 模拟异常
}
```
6.测试和调试:最后进行测试和调试,确保页面能够正常使用,数据能够正确保存到数据库中。
以上是一个示例,具体实现可能会因项目和技术栈不同而有所不同。