使用Predicate 进行条件判断

import java.util.ArrayList;
import java.util.function.Predicate;

public class PredicateTest {
    /*
        String[] strArray = {"林青霞,30","刘岩,34","张曼玉,35","貂蝉,31","王祖贤,33"};
        字符串数组中有多条数据,通过Predicate 接口的拼装将符合要求的字符串筛选到集合ArrayList中,
        并遍历ArrayList集合
        要求:同时满足如下要求
        1:姓名长度大于2
        2:年龄大于33
        分析:
        1:有两个判断条件,所以需要使用两个Predicate接口,对条件进行判断
        2:必须同时满足两个条件,所以可以使用and方法连接两个判断条件
     */
    public static void main(String[] args) {

        String[] strArray = {"林青霞,30","刘岩,34","张曼玉,35","貂蝉,31","王祖贤,33"};
//        内部类实现方法
//        ArrayList<String> retArr = myFilter(strArray, new Predicate<String>() {
//            @Override
//            public boolean test(String s) {
//                boolean b = s.split(",")[0].length() > 2;
//                return b;
//            }
//        }, new Predicate<String>() {
//            @Override
//            public boolean test(String s) {
//                return Integer.parseInt(s.split(",")[1]) > 33;
//            }
//        });

//      采用lambda 方式实现
        ArrayList<String> retArr = myFilter(strArray,
                s -> s.split(",")[0].length() > 2,
                s -> Integer.parseInt(s.split(",")[1]) >= 33);


        //遍历数组
        System.out.println(retArr);


    }

    private static ArrayList<String> myFilter(String[] strArray, Predicate<String> pre1,Predicate<String> pre2){
        ArrayList<String> array =new ArrayList<String>();

        //遍历数组
        for (String str:strArray){
            if(pre1.and(pre2).test(str)){
                array.add(str);
            }
        }

        return array;
    }

}
MyBatis集成Predicate使用XML方式实现分页,我们可以使用MyBatis提供的分页插件PageHelper,它可以帮助我们自动进行分页处理,简化了分页的实现过程。 在使用PageHelper之前,我们需要在MyBatis的配置文件配置分页插件,示例代码如下: ``` <plugins> <plugin interceptor="com.github.pagehelper.PageInterceptor"> <property name="helperDialect" value="mysql"/> </plugin> </plugins> ``` 在上述代码,我们使用PageInterceptor作为分页插件,并指定数据库为MySQL。 然后,在Mapper接口,我们定义一个方法来接收Predicate对象和分页参数,并将其作为参数传递给XML定义的SQL语句。示例代码如下: ``` public interface UserMapper { List<User> findUserByPredicate( @Param("predicate") Predicate<User> predicate, @Param("page") PageRequest pageRequest); } ``` 在上述代码,我们使用PageRequest类来封装分页参数,包括页码和每页记录数。然后,在XML,我们可以使用PageHelper提供的语法来进行分页查询,示例代码如下: ``` <select id="findUserByPredicate" resultMap="userResultMap"> SELECT * FROM user <where> <if test="predicate != null"> AND <foreach collection="predicate.conditions" item="condition" separator=" AND "> ${condition.property} ${condition.operator} #{condition.value} </foreach> </if> </where> <if test="page != null"> ORDER BY id LIMIT #{page.offset}, #{page.pageSize} </if> </select> ``` 在上述代码,我们使用if标签来判断传入的分页参数是否为null,如果不为null,则使用LIMIT子句来进行分页查询。其,#{page.offset}表示查询偏移量,#{page.pageSize}表示每页记录数。 最后,在调用Mapper接口方法时,我们可以传入Predicate对象和分页参数,示例代码如下: ``` Predicate<User> predicate = ...; PageRequest pageRequest = new PageRequest(1, 10); List<User> userList = userMapper.findUserByPredicate(predicate, pageRequest); ``` 在上述代码,我们使用PageRequest类来构造分页参数,并将其传递给Mapper接口方法。然后,PageHelper会自动进行分页处理,返回符合条件的记录列表。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值