MyBatis Plus 提供的 Wrapper实现多表联查样例
时间: 2023-05-16 13:04:52 浏览: 1788
以下是一个 MyBatis Plus 提供的 Wrapper 实现多表联查的样例:
```java
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.select("user.id", "user.name", "order.order_no", "order.price")
.eq("user.status", 1)
.eq("order.status", 1)
.eq("user.id", 1)
.eq("order.user_id", 1)
.leftJoin("order", "user.id = order.user_id");
List<Map<String, Object>> result = userMapper.selectMaps(queryWrapper);
```
这个样例中,我们使用了 QueryWrapper 类来构建查询条件,使用 select 方法来指定查询的字段,使用 eq 方法来指定查询条件,使用 leftJoin 方法来指定多表联查的条件。最后,我们使用 selectMaps 方法来执行查询,并将结果以 Map 的形式返回。
相关问题
MyBatis Plus用criteria 进行四表联查
MyBatis Plus提供的Criteria类是用于构建查询条件的,它并不支持多表联查。如果需要进行多表联查,可以使用MyBatis Plus提供的Wrapper类,或者使用MyBatis原生的SQL语句。
下面是使用Wrapper类进行四表联查的示例代码:
```
QueryWrapper<User> userWrapper = new QueryWrapper<>();
userWrapper.select("user.id", "user.name", "dept.name")
.eq("user.status", 1)
.eq("dept.type", "IT")
.eq("role.name", "admin")
.inSql("user.dept_id", "select id from dept where parent_id = 1");
userWrapper.join("dept", "user.dept_id = dept.id")
.join("user_role", "user.id = user_role.user_id")
.join("role", "user_role.role_id = role.id");
List<Map<String, Object>> userList = userMapper.selectMaps(userWrapper);
```
在上面的代码中,我们使用QueryWrapper构建查询条件,并且使用select方法指定需要查询的字段。然后使用join方法进行多表联查,最后使用selectMaps方法查询结果。
需要注意的是,在进行多表联查时,需要使用别名来指定表名,否则可能会出现SQL语句错误。
mybatis-plus 如何多表联查
MyBatis-Plus是一个基于MyBatis的增强工具,它提供了很多便捷的功能来简化开发。在MyBatis-Plus中,多表联查可以通过使用Wrapper(查询条件封装器)来实现。
下面是一个示例,展示了如何使用MyBatis-Plus进行多表联查:
1. 首先,定义需要查询的实体类,例如User和Order。
```java
public class User {
private Long id;
private String name;
// 省略其他属性和getter/setter方法
}
public class Order {
private Long id;
private Long userId;
private String orderNo;
// 省略其他属性和getter/setter方法
}
```
2. 创建Mapper接口,使用MyBatis-Plus提供的BaseMapper,并添加自定义的查询方法。
```java
public interface UserMapper extends BaseMapper<User> {
List<User> selectUserWithOrder();
}
```
3. 在Mapper.xml文件中编写SQL语句,使用MyBatis-Plus的Wrapper来进行多表联查。
```xml
<select id="selectUserWithOrder" resultMap="userResultMap">
SELECT u.id, u.name, o.id AS order_id, o.order_no
FROM user u
LEFT JOIN `order` o ON u.id = o.user_id
</select>
```
4. 在Service层调用Mapper接口的查询方法。
```java
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public List<User> getUserWithOrder() {
return userMapper.selectUserWithOrder();
}
}
```
这样,就可以通过调用getUserWithOrder方法来实现多表联查。
阅读全文