mybatisplus 多个条件查询
时间: 2023-11-17 17:01:12 浏览: 101
MyBatis-plus支持多个条件查询,可以使用QueryWrapper类来实现。QueryWrapper类提供了许多方法来构建查询条件,例如eq()、ne()、like()、in()等等。可以通过链式调用这些方法来构建多个查询条件,最后使用selectList()方法执行查询并返回结果。下面是一个示例代码:
```
@Test
public void queryWrapper() {
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("age", 18)
.like("name", "Tom")
.in("status", 0, 1);
List<User> users = userMapper.selectList(queryWrapper);
users.forEach(System.out::println);
}
```
这个示例代码中,我们使用QueryWrapper类构建了三个查询条件:age等于18、name包含Tom、status等于0或1。最后使用selectList()方法执行查询并返回结果。
相关问题
mybatisplus多个条件查询
MyBatis-Plus提供了多种方式来实现多个条件查询,以下是常用的两种方式:
1. 使用Wrapper构建查询条件:
MyBatis-Plus提供了Wrapper接口和QueryWrapper、UpdateWrapper两个实现类,可以通过这些类构建复杂的查询条件。例如,我们可以使用QueryWrapper来构建一个带有多个查询条件的查询:
```
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("name", "张三").ge("age", 18).orderByAsc("age");
List<User> userList = userMapper.selectList(queryWrapper);
```
上述代码中,我们使用QueryWrapper构建了一个查询条件,其中使用了eq、ge、orderByAsc等方法来添加多个查询条件,最后使用selectList方法执行查询。
2. 使用@Param注解传递多个参数:
另一种常用的方式是使用@Param注解来传递多个查询条件。例如,我们可以在Mapper接口中定义一个方法,使用@Param注解传递多个查询条件:
```
List<User> selectUserList(@Param("name") String name, @Param("age") Integer age);
```
然后在XML文件中使用这些参数构建查询条件:
```
<select id="selectUserList" resultType="com.example.User">
SELECT * FROM user WHERE name = #{name} AND age >= #{age}
</select>
```
上述代码中,我们在XML文件中使用了#{name}和#{age}来引用@Param注解中的参数,构建了一个带有多个查询条件的查询。在调用这个方法时,我们需要传递相应的参数。
mybatisplus多个实体查询
在 MyBatis Plus 中,可以使用 Wrapper 来实现多个实体的查询。Wrapper 是 MyBatis Plus 提供的一个查询条件构造器,它可以帮助我们方便地构建复杂的查询条件。
下面是一个示例,演示了如何使用 Wrapper 进行多个实体的查询:
```java
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.additional.query.impl.LambdaQueryChainWrapper;
import com.baomidou.mybatisplus.extension.service.additional.query.impl.QueryChainWrapper;
import com.example.demo.entity.User;
import com.example.demo.entity.UserProfile;
import com.example.demo.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public List<User> getUsersWithProfile() {
QueryWrapper<User> userWrapper = new QueryWrapper<>();
userWrapper.select("id", "username", "email");
QueryWrapper<UserProfile> profileWrapper = new QueryWrapper<>();
profileWrapper.select("user_id", "nickname");
userWrapper.inSql("id", "SELECT user_id FROM user_profile");
List<User> userList = userMapper.selectList(userWrapper);
return userList;
}
}
```
在上面的示例中,我们通过 QueryWrapper 构建了两个查询条件,分别对应 User 实体和 UserProfile 实体。然后使用 inSql 方法将两个实体关联起来。
这样就可以实现多个实体的查询了。当然,具体的查询条件和关联方式可以根据实际需求进行调整。
希望对你有所帮助!如果还有其他问题,请继续提问。
阅读全文