有两个表:CREATE TABLE `orders` ( `id` int NOT NULL AUTO_INCREMENT, `order_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `total` decimal(10,0) NOT NULL, `uid` int DEFAULT NULL, PRIMARY KEY (`id`), KEY `uid` (`uid`), CONSTRAINT `order_ibfk_2` FOREIGN KEY (`uid`) REFERENCES `user` (`id`) ON DELETE SET NULL ON UPDATE RESTRICT ) ENGINE=InnoDB AUTO_INCREMENT=68 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; CREATE TABLE `article_cat` ( `id` int NOT NULL AUTO_INCREMENT, `cat_name` varchar(20) NOT NULL, `parent_id` int DEFAULT NULL, `show_in_nav` tinyint(1) DEFAULT NULL, `sort_order` smallint DEFAULT NULL, `create_time` datetime DEFAULT NULL, `update_time` datetime DEFAULT NULL, `deleted` int(1) unsigned zerofill DEFAULT '0', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
时间: 2023-08-15 21:10:38 浏览: 143
MySQL AUTO_INCREMENT 主键
根据你提供的表结构,我们可以进行一对多查询,查询订单(orders)及其对应的文章分类(article_cat)信息。
首先,我们需要在Order实体类中定义一个属性,用于保存与文章分类的关联关系。可以使用@OneToMany注解来标识一对多关系,并指定关联的属性名:
```java
public class Order {
//...
@OneToMany(mappedBy = "order")
private List<ArticleCat> articleCats;
//...
}
```
接下来,在ArticleCat实体类中定义一个属性,用于保存与订单的关联关系。可以使用@ManyToOne注解来标识多对一关系,并指定关联的属性名:
```java
public class ArticleCat {
//...
@ManyToOne
@JoinColumn(name = "order_id")
private Order order;
//...
}
```
在进行查询时,我们可以使用MyBatis-Plus提供的Wrapper对象来构建查询条件。通过使用leftJoin方法进行关联查询,并使用select方法指定要查询的字段:
```java
public List<Order> selectOrderWithArticleCats() {
return orderMapper.selectList(new QueryWrapper<Order>()
.select("orders.id", "orders.order_time", "orders.total", "article_cat.id as article_cat_id", "article_cat.cat_name as article_cat_name")
.leftJoin("article_cat", "orders.id = article_cat.order_id")
.eq("orders.id", 1)
);
}
```
以上是一个简单的示例,通过关联查询查询订单及其对应的文章分类信息。你可以根据实际情况进行修改和扩展。
希望对你有所帮助!如果还有其他问题,请继续提问。
阅读全文