BeanSearcher接收数组参数、以及逻辑删除

package com.ciih.workshop.config;

import cn.hutool.core.lang.PatternPool;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.ReUtil;
import com.ejlchina.searcher.BeanMeta;
import com.ejlchina.searcher.ParamFilter;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;

import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

@Component
public class BeanSearchConfig {
    @Bean
    public ParamFilter myParamFilter() {
        return new ParamFilter() {
            @Override
            public <T> Map<String, Object> doFilter(BeanMeta<T> beanMeta, Map<String, Object> paraMap) {
                // beanMeta 是正在检索的实体类的元信息, paraMap 是当前的检索参数
                // 这里可以写一些自定义的参数过滤规则
                // 将多ID传入的数组形式,解析未框架可以识别的_0,_1,_2的形式。
                Object ids = paraMap.get("id");
                if (ObjectUtil.isNotEmpty(ids)) {
                    String[] split = ids.toString().replaceAll("\\[", "").replaceAll("]", "").split(",");
                    paraMap.remove("id");
                    paraMap.put("id_op", "il");
                    for (int i = 0; i < split.length; i++) {
                        paraMap.put("id" + "_" + i, split[i]);
                    }
                }

                /**
                 * 将前端传过来的数组转成_0_1_2...形式
                 * 注:博主separator采用的是下划线,框架默认是中划线。读者根据自己情况修改一下
                 */
                // 如果匹配到了以[...]形式,则认为是数组,元素以逗号分割出来。
                Pattern pattern = Pattern.compile("\\[(.*?)\\]");

                Map<String, Object> map = ObjectUtil.clone(paraMap);
                map.forEach((k, v) -> {
                    Matcher matcher = pattern.matcher(v.toString());
                    if (matcher.find()) {
                        String arrayString = matcher.group(1);
                        String[] array = arrayString.split(",\\s*");
                        // 对数组进行操作
                        if (array.length > 0) {
                            paraMap.remove(k);
                            paraMap.putIfAbsent(k + "_op", "il");
                            for (int i = 0; i < array.length; i++) {
                                paraMap.put(k + "_" + i, array[i]);
                            }
                        }
                    }
                });

                /**
                 * 逻辑删除:
                 * 删除标识:deleted 0未删除、1已删除
                 */
                paraMap.put("deleted", 0);
                paraMap.put("deleted123456", 0);
                return paraMap;
            }
        };
    }
}

注意:自定义加入的参数,实体类中要有这个字段、或字段_...

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
将Bean Searcher集成到Spring Boot项目中非常简单,您只需要按照以下步骤进行操作: 1. 将Bean Searcher的jar包添加到项目的classpath中。 如果您使用Maven进行项目管理,可以在项目的pom.xml文件中添加以下依赖: ``` <dependency> <groupId>com.github.houbb</groupId> <artifactId>bean-searcher</artifactId> <version>1.0.0</version> </dependency> ``` 2. 在Spring Boot项目中创建一个BeanSearcherConfig类,用于配置Bean Searcher的Bean: ``` @Configuration public class BeanSearcherConfig { @Bean public BeanSearcher beanSearcher() { return new BeanSearcher(); } } ``` 3. 在需要使用Bean Searcher的地方注入BeanSearcher对象,例如: ``` @Autowired private BeanSearcher beanSearcher; ``` 4. 创建一个JavaBean对象,例如: ``` public class User { private String name; private int age; //其他属性和方法 } ``` 5. 创建一个查询条件,例如: ``` Criteria criteria = new Criteria(); criteria.add(Restrictions.eq("name", "张三")); criteria.add(Restrictions.gt("age", 18)); ``` 6. 使用Bean Searcher对JavaBean对象进行查询,例如: ``` List<User> userList = new ArrayList<>(); //添加多个User对象到userList中 List<User> result = beanSearcher.search(userList, criteria); ``` 其中,userList是一个包含多个User对象的List集合,result是查询结果的List集合。 7. 可以对查询结果进行排序和分页操作,例如: ``` Criteria criteria = new Criteria(); criteria.add(Restrictions.eq("name", "张三")); criteria.add(Restrictions.gt("age", 18)); criteria.addOrder(Order.asc("age")); criteria.setFirstResult(0); criteria.setMaxResults(10); List<User> result = beanSearcher.search(userList, criteria); ``` 其中,addOrder用于设置排序方式,asc表示升序,desc表示降序;setFirstResult和setMaxResults用于设置查询结果的起始位置和最大数量。 通过以上步骤,您就可以将Bean Searcher集成到Spring Boot项目中并进行使用了。如果您需要更多的操作和功能,可以参考官方文档进行学习和使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

文子阳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值