如果roleIds 为空 则不进行关联呢
时间: 2024-03-09 09:45:59 浏览: 19
如果 `roleIds` 为空,则不需要进行子表的关联查询。此时,我们可以通过判断 `roleIds` 是否为空,来决定是否使用 `inSql` 方法进行关联查询。
例如,我们有两个实体类 `User` 和 `UserRole`,它们之间是一对多的关系,即一个用户可以拥有多个角色。现在我们要查询指定 ID 的用户,并且这些用户的角色在某个指定的列表中,如果 `roleIds` 为空,则不进行子表的关联查询。
可以使用如下代码实现:
```java
String roleIds = ""; // roleIds 为空
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("id", userId);
if (!StringUtils.isEmpty(roleIds)) {
queryWrapper.inSql("id", "select user_id from user_role where role_id in (" + roleIds + ") and user_id = {0}");
}
IPage<User> userPage = userMapper.selectPage(new Page<>(1, 10), queryWrapper);
```
在上面的代码中,我们通过 `eq` 方法设置了 ID 的条件,然后通过 `StringUtils.isEmpty` 方法判断 `roleIds` 是否为空,如果不为空,则使用 `inSql` 方法设置了一个子查询,该子查询的结果为拥有指定角色的用户 ID,并且还有一个占位符 `{0}`,用于替换主表的 ID 值。最后,我们将主表的 ID 值作为参数传入 `selectPage` 方法中。
需要注意的是,为了避免 SQL 注入攻击,我们需要将 `roleIds` 参数处理为 SQL 语句中的字符串,并使用占位符的方式传入主表的 ID 值。如果 `roleIds` 为空,则不会执行关联查询,因此不需要担心 SQL 注入攻击的问题。
相关推荐
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)