QueryWrapper不支持多表
时间: 2023-11-17 14:56:07 浏览: 82
好的,你的问题是 "QueryWrapper不支持多表",我来回答一下。
QueryWrapper是MyBatis-Plus提供的一个查询构造器,用于构建SQL查询语句。它主要用于单表查询,不支持多表查询。如果需要进行多表查询,可以使用MyBatis-Plus提供的LambdaQueryWrapper或者自定义SQL语句来实现。
LambdaQueryWrapper是QueryWrapper的增强版,支持多表查询和Lambda表达式。使用LambdaQueryWrapper可以方便地进行多表关联查询,例如:
```
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(User::getName, "张三")
.inSql(User::getId, "select user_id from user_role where role_id = 1");
List<User> userList = userMapper.selectList(wrapper);
```
这个例子中,我们使用LambdaQueryWrapper进行了一个多表关联查询,查询条件为用户姓名为"张三"且角色为1的所有用户。
除了LambdaQueryWrapper,还可以使用自定义SQL语句来实现多表查询。例如:
```
@Select("select u.*, r.role_name from user u left join user_role ur on u.id = ur.user_id left join role r on ur.role_id = r.id where u.name = #{name} and r.id = #{roleId}")
List<User> selectUserWithRole(@Param("name") String name, @Param("roleId") Long roleId);
```
这个例子中,我们使用自定义SQL语句进行了一个多表关联查询,查询条件为用户姓名为指定值且角色ID为指定值的所有用户,并且返回结果包含用户信息和角色名称。
阅读全文