下面这条sql,如果用mybatis-plus,该怎么写? select id, poolId, resource_pool, manufacturer, tool_name, tool_ip from tbl_utm_tool_config <where> <if test="null != roleId and 1 != roleId and null != toolDTOList and toolDTOList.size > 0"> <foreach collection="toolDTOList" item="item" open="and (" close=")" separator="or"> (resource_pool = #{item.toolPool} and tool_ip = #{item.toolIp}) </foreach> </if> <if test="null != query.poolName and '' != query.poolName"> and resource_pool = #{query.poolName} </if> <if test="null != query.toolIp and '' != query.toolIp"> and tool_ip = #{query.toolIp} </if> </where>
时间: 2024-02-14 14:03:23 浏览: 218
在 MyBatis-Plus 中,可以使用 QueryWrapper 来构建查询条件。对于这个 SQL 语句,可以按照以下步骤进行操作:
1. 创建 QueryWrapper 对象
```java
QueryWrapper<UtmToolConfig> queryWrapper = new QueryWrapper<>();
```
2. 构建 where 条件
```java
queryWrapper.eq("1", "1"); // 用于拼接后续的查询条件
if (roleId != null && roleId != 1 && toolDTOList != null && toolDTOList.size() > 0) {
queryWrapper.and(wrapper -> {
for (ToolDTO toolDTO : toolDTOList) {
wrapper.or(w -> {
w.eq("resource_pool", toolDTO.getToolPool()).eq("tool_ip", toolDTO.getToolIp());
});
}
});
}
if (StringUtils.isNotBlank(query.getPoolName())) {
queryWrapper.eq("resource_pool", query.getPoolName());
}
if (StringUtils.isNotBlank(query.getToolIp())) {
queryWrapper.eq("tool_ip", query.getToolIp());
}
```
在上面的代码中,使用 and 和 or 方法构建了多个查询条件,查询条件的值通过 for 循环生成,使用 eq 方法表示相等查询条件。同时使用 StringUtils.isNotBlank 方法判断查询条件是否为空。
3. 执行查询操作
```java
List<UtmToolConfig> utmToolConfigList = utmToolConfigMapper.selectList(queryWrapper);
```
最后,使用 selectList 方法执行查询操作,查询结果将会返回一个 UtmToolConfig 类型的列表。
完整示例代码如下:
```java
QueryWrapper<UtmToolConfig> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("1", "1"); // 用于拼接后续的查询条件
if (roleId != null && roleId != 1 && toolDTOList != null && toolDTOList.size() > 0) {
queryWrapper.and(wrapper -> {
for (ToolDTO toolDTO : toolDTOList) {
wrapper.or(w -> {
w.eq("resource_pool", toolDTO.getToolPool()).eq("tool_ip", toolDTO.getToolIp());
});
}
});
}
if (StringUtils.isNotBlank(query.getPoolName())) {
queryWrapper.eq("resource_pool", query.getPoolName());
}
if (StringUtils.isNotBlank(query.getToolIp())) {
queryWrapper.eq("tool_ip", query.getToolIp());
}
List<UtmToolConfig> utmToolConfigList = utmToolConfigMapper.selectList(queryWrapper);
```
阅读全文