mybatisplus模糊查询多表联查
时间: 2023-09-19 12:07:38 浏览: 146
在 MyBatis Plus 中,可以使用 Wrapper 来实现多表联查和模糊查询。下面是一个示例:
```java
QueryWrapper<EntityA> queryWrapper = new QueryWrapper<>();
queryWrapper.like("a.name", "keyword"); // 在表A中模糊查询name字段为"keyword"
queryWrapper.or(); // 使用or关键字连接多个条件
queryWrapper.like("b.name", "keyword"); // 在表B中模糊查询name字段为"keyword"
List<EntityA> result = entityAMapper.selectList(queryWrapper);
```
上面的示例中,我们使用了 QueryWrapper 对象来构建查询条件。使用 `like` 方法进行模糊查询,指定了字段和关键字。使用 `or` 方法连接多个条件,实现联查的效果。
注意,在查询条件中,表名需要使用别名,并且在字段名前加上别名,以区分不同表中的同名字段。
另外,需要根据你的实际情况调整表名、字段名和关键字等参数。
相关问题
mybatisplus使用Wrapper多表联查
以下是使用MybatisPlus的Wrapper进行多表联查的示例:
```java
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public Page<User> getUserListWithRole() {
Page<User> page = new Page<>(1, 10); // 分页查询第一页,页10条数据
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.select("user.*", "role.role_name") // 指定查询的字段
.eq("user.status", 1) // 添加查询条件
.eq("role.role_type", 2)
.eq("role.is_deleted", 0)
.leftJoin("user_role", "user.id = user_role.user_id")
.leftJoin("role", "user_role.role_id = role.id");
return userMapper.selectPage(page, queryWrapper);
}
}
```
上述示例中,我们使用了`QueryWrapper`来构建查询条件,通过`select`方法指定查询的字段,通过`eq`方法添加查询条件,通过`leftJoin`方法进行多表联查。最后,使用`selectPage`方法执行分页查询。
mybatisplus怎么实现多表联查
MybatisPlus 实现多表联查可以使用 MybatisPlus 提供的 Wrapper 来构建 SQL,Wrapper 是一个条件构造抽象类,用于辅助进行条件构造,常用的有 QueryWrapper 和 UpdateWrapper。
下面以 QueryWrapper 为例来说明多表联查的实现方法。
假设有两张表 A 和 B,要实现 A 表和 B 表的联查,可以先创建一个 QueryWrapper 对象,然后使用 join 方法指定要联查的表和关联条件,最后进行查询操作。具体代码如下:
```
QueryWrapper<A> wrapper = new QueryWrapper<>();
wrapper.eq("a.id", 1) // 指定 A 表的条件
.join("b", "a.id = b.a_id") // 指定要联查的表和关联条件
.select("a.*, b.*"); // 指定要查询的字段,可以使用别名来避免字段名冲突
List<Map<String, Object>> list = aMapper.selectMaps(wrapper); // 执行查询操作
```
以上代码使用了 selectMaps 方法,返回的是一个 List<Map<String, Object>>,其中每个 Map 对象表示一条记录,key 是字段名,value 是字段值。如果需要返回实体对象,可以使用 selectList 方法,如下所示:
```
QueryWrapper<A> wrapper = new QueryWrapper<>();
wrapper.eq("a.id", 1)
.join("b", "a.id = b.a_id")
.select("a.*, b.*");
List<A> list = aMapper.selectList(wrapper); // 返回实体对象列表
```
需要注意的是,如果要实现多表联查,需要在 MybatisPlus 的配置文件中开启驼峰命名策略,以避免字段名和表名的大小写不一致导致的 SQL 执行错误。可以在配置文件中添加以下配置:
```
mybatis-plus:
configuration:
map-underscore-to-camel-case: true
```
阅读全文