mybatisplus无法使用join方法
时间: 2023-10-05 22:13:58 浏览: 94
mybatis-plus-join是mybatis plus的一个多表插件
如果你想在 MyBatis-Plus 中使用 JOIN 查询,可以尝试以下两种方法:
1. 使用 @TableName 注解
可以在实体类上使用 @TableName 注解指定表名,并使用 @TableField 注解指定字段名,然后使用 MyBatis-Plus 提供的 Wrapper 来构建 JOIN 查询语句。示例如下:
```java
@TableName("user")
public class User {
@TableField("user_id")
private Long id;
private String name;
private Integer age;
private String email;
// 省略 getter 和 setter 方法
}
@TableName("order")
public class Order {
@TableField("order_id")
private Long id;
@TableField("user_id")
private Long userId;
private BigDecimal amount;
// 省略 getter 和 setter 方法
}
// 使用 Wrapper 构建 JOIN 查询
QueryWrapper<Order> wrapper = new QueryWrapper<>();
wrapper.select("order.order_id", "user.name", "order.amount")
.eq("user.age", 18)
.eq("user.email", "test@example.com")
.eq("order.status", 1)
.eq("order.is_deleted", 0)
.join("user", "order.user_id = user.user_id");
List<Map<String, Object>> result = orderMapper.selectMaps(wrapper);
```
2. 使用 XML 配置文件
可以使用 MyBatis 的 XML 配置文件来编写 JOIN 查询语句。示例如下:
在 OrderMapper.xml 文件中编写 JOIN 查询语句:
```xml
<select id="selectOrderList" resultMap="orderResultMap">
SELECT
order.order_id,
user.name,
order.amount
FROM
`order`
JOIN `user` ON order.user_id = user.user_id
WHERE
user.age = #{age}
AND user.email = #{email}
AND order.status = 1
AND order.is_deleted = 0
</select>
```
在 OrderMapper 接口中定义 selectOrderList 方法:
```java
List<Map<String, Object>> selectOrderList(@Param("age") Integer age, @Param("email") String email);
```
这样就可以使用 MyBatis-Plus 和 MyBatis 的 XML 配置文件来编写 JOIN 查询语句了。
阅读全文