QueryWrapper 怎么使用find_in_set
时间: 2024-06-17 21:06:35 浏览: 264
QueryWrapper 是 MyBatis-Plus 中的一个查询构造器,用于构建 SQL 查询条件,简化了SQL查询的编写过程。find_in_set 是 MySQL 中的函数,用于在字符串列表中查找特定字符串。在 QueryWrapper 中使用 find_in_set 可以通过以下方式实现:
假设我们有一个实体类 User,其中有一个属性 tags 存储着用户的标签,我们希望查询包含特定标签的用户列表。那么我们可以这样构造 QueryWrapper:
```
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.apply("find_in_set('tag1', tags)");
```
其中 apply 方法可以接收一个 SQL 片段作为参数,这里我们直接使用 MySQL 的函数 find_in_set 来完成查询。
相关问题
querywrapper find_in_set
根据提供的引用内容,queryWrapper是一个查询条件的包装器,它可以用于构建复杂的查询条件。它提供了一系列方法来进行条件的组合和筛选,以满足不同的查询需求。其中,find_in_set是MySQL中的一个函数,用于判断某个字符串是否包含在一个字段的值中。
示例中的第一种方法是直接使用自定义查询语句,利用MySQL的find_in_set函数来实现查询。第二种方法是利用mybatis-plus的lambda().apply方法,通过拼接SQL语句来实现查询。
总结起来,queryWrapper可以通过调用相应的方法和条件来构建查询语句,而find_in_set是MySQL中的一个函数,可以用于判断某个字符串是否包含在某个字段的值中。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* [queryWrapper手册及示例](https://blog.csdn.net/cheers_bin/article/details/125961109)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *3* [mybatis-plus lambda 写法 ,如何实现Mysql中的 find_in_set 功能,查询某个字符串是否包含在数据表中的...](https://blog.csdn.net/qq_27037397/article/details/115523876)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
mybatis-plus使用find_in_set
Mybatis-plus使用find_in_set函数可以实现对字段中包含指定值的查询。在使用lambda表达式拼接SQL时,可以通过apply方法来使用find_in_set函数。具体的代码示例如下:
```java
List<String> realIds = crmProgrammeService.getIdsByRealEstateNames(name);
if (!CollectionUtils.isEmpty(realIds)){
if (realIds.size() == 1){
queryWrapper.like("real_estate_ids", realIds.get(0));
} else {
for (int i = 0; i < realIds.size(); i++) {
if (i == 0) {
queryWrapper.apply(null != realIds.get(i), "(find_in_set({0},real_estate_ids)", realIds.get(i));
} else {
if (i == realIds.size() - 1) {
queryWrapper.or().apply(null != realIds.get(i), "find_in_set({0},real_estate_ids))", realIds.get(i));
} else {
queryWrapper.or().apply(null != realIds.get(i), "find_in_set({0},real_estate_ids)", realIds.get(i));
}
}
}
}
} else {
queryWrapper.isNull("real_estate_ids");
}
```
以上代码中,通过apply方法传入find_in_set函数的参数,实现了对real_estate_ids字段进行查询。具体的SQL语句如下:
```sql
SELECT * FROM `crm_programme` where find_in_set(1,real_estate_ids) or find_in_set(3,real_estate_ids);
```
这条SQL语句会查询crm_programme表中real_estate_ids字段包含1或3的记录。\[1\]\[2\]
#### 引用[.reference_title]
- *1* *2* [记录 mybatis plus QuerWapper使用 FIND_IN_SET](https://blog.csdn.net/qq_34410726/article/details/126561485)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]
- *3* [mybatis-plus中使用FIND_IN_SET函数](https://blog.csdn.net/qq_41289165/article/details/116115674)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
阅读全文