LambdaQueryWrapper -使用说明

😀前言
本篇博文是关于LambdaQueryWrapper -的使用说明,希望你能够喜欢

🏠个人主页:晨犀主页
🧑个人简介:大家好,我是晨犀,希望我的文章可以帮助到大家,您的满意是我的动力😉😉

💕欢迎大家:这里是CSDN,我总结知识的地方,欢迎来到我的博客,感谢大家的观看🥰
如果文章有什么需要改进的地方还请大佬不吝赐教 先在此感谢啦😊

LambdaQueryWrapper -使用说明

使用和解读

    //我们编写方法,使用LambdaQueryWrapper封装查询条件,完成检索
 
    @GetMapping("/furnsBySearchPage2")
    public Result listFurnsByConditionPage2(
            @RequestParam(defaultValue = "1") Integer pageNum,
            @RequestParam(defaultValue = "5") Integer pageSize,
            @RequestParam(defaultValue = "") String search) {
 
        //说明:关于lambda表达式, 我们这里使用的是 类名::实例方法
        //是lambda方法引用中一个不太容易理解的知识点
        //后面我们使用到每个lambda表达式式时候,就会有针对性进行讲解-这样理解的就非常深刻的心得体会: 多用几次,就熟悉了,不用背
 
        //解读
 
        //1. Furn::getName 就是通过lambda表达式引用实例方法 getName
        //2. 这里就是把  Furn::getName 赋给 SFunction<T,R> 函数式接口 ? 函数式接口一会再说明
        //3. 看看  SFunction<T,R> 源码
        /**
         * @FunctionalInterface
         * public interface SFunction<T, R> extends Function<T, R>, Serializable {
         * }
         * 父接口
         * @FunctionalInterface
         * public interface Function<T, R> {
         *    R apply(T t); //抽象方法: 表示根据类型T的参数,获取类型R的结果
         *
         *    //后面还有默认实现方法
         * }
         *4. 传入 Furn::getName 后, 就相当于实现了 SFunction<T, R> 的apply方法
         *5. 底层会根据 传入的 Furn::getName 去得到该方法的对应的属性映射的表的字段, 可以更加灵活
         *6. 回顾一下mybatis 在xxMapper.xml 中有 ResultMap 会体现 Bean的属性和表的字段的映射关系
         * <resultMap id="IdenCardResultMap" type="IdenCard">
         *         <id property="id" column="id"/>
         */
 
 
        //创建LambdaQueryWrapper,封装检索询件
        LambdaQueryWrapper<Furn> lambdaQueryWrapper = Wrappers.<Furn>lambdaQuery();
 
        //判断search
        if (StringUtils.hasText(search)) {
            //lambdaQueryWrapper.like(Furn::getName,search);
 
            //换一个写法-小伙伴可能会清晰, 这时使用依然是正确
            SFunction<Furn, Object> sf = Furn::getName;
            lambdaQueryWrapper.like(sf, search);
        }
 
        Page<Furn> page = furnService.page(new Page<>(pageNum, pageSize), lambdaQueryWrapper);
        log.info("page={}", page.getRecords());
        return Result.success(page);
    }
 

模拟实现

public class Test {
    public static void main(String[] args) {
 
        //传统的方式来实现NlcFunction/得到一个实现接口的对象 可以使用
        //匿名内部类
        //NlcFunction<Desk, String> hf = new NlcFunction<Desk, String>() {
        //    @Override
        //    public String apply(Desk desk) {
        //        return "hello desk";
        //    }
        //};
        //String val = hf.apply(new Desk());
        //System.out.println("val-" + val);
 
        NlcFunction<Desk,String> hf2 = Desk::getBrand;
 
        String val2 = hf2.apply(new Desk());
        System.out.println("val2-" + val2);
 
        NlcFunction<Desk,Object> hf3 = Desk::getId;
    }
}
 
//定义一个函数式接口: 有且只有一个抽象方法的接口
//我们可以使用@FunctionalInterface 来标识一个函数式接口
//NlcFunction是一个函数式接口 (是自定义泛型接口)
 
@FunctionalInterface
interface NlcFunction<T, R> {
    R apply(T t); //抽象方法: 表示根据类型T的参数,获取类型R的结果
 
    //public void hi();
 
    //函数式接口,依然可以有多个默认实现方法
    default public void ok() {
        System.out.println("ok");
    }
}
 
@FunctionalInterface
interface HspInterface {
    public void hi();
}
 
class Desk { //Bean
    private String name = "wyx desk";
    private String brand = "北京牌";
    private Integer id = 10;
 
    public Integer getId() {
        return id;
    }
 
    public String getName() {
        return name;
    }
 
    public String getBrand() {
        return brand;
    }
 
 
}

😄总结

  1. 函数式接口: 有且只有一个抽象方法的接口。
  2. R apply(T t);是抽象方法: 表示根据类型T的参数,获取类型R的结果

😁热门专栏推荐
Thymeleaf快速入门及其注意事项

Spring Initailizr–快速入门–SpringBoot的选择

带你了解SpringBoot支持的复杂参数–自定义对象参数-自动封装

Rest 优雅的url请求处理风格及注意事项

文章到这里就结束了,如果有什么疑问的地方请指出,诸大佬们一起来评论区一起讨论😁
希望能和诸大佬们一起努力,今后我们一起观看感谢您的阅读🍻
如果帮助到您不妨3连支持一下,创造不易您们的支持是我的动力🤞

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
MyBatis-Plus是一个Java持久层框架,它在MyBatis的基础上提供了更加便捷和强大的功能。LambdaQueryWrapper是MyBatis-Plus中的一个查询条件构造器,它可以通过Lambda表达式来编写查询条件,使得代码更加简洁和易读。 使用LambdaQueryWrapper可以按照以下步骤进行: 1. 导入相关的依赖:在项目的pom.xml文件中添加MyBatis-Plus的依赖。 2. 创建LambdaQueryWrapper对象:通过LambdaQueryWrapper的构造方法创建一个查询条件构造器对象。 3. 编写查询条件:使用LambdaQueryWrapper对象的方法来编写查询条件。可以使用Lambda表达式来指定查询字段、条件和关联关系等。 4. 执行查询操作:调用MyBatis-Plus提供的相应方法执行查询操作,如selectList、selectOne等。 下面是一个简单的示例代码,演示如何使用LambdaQueryWrapper进行查询: ```java import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; importimport com.example.demo.entity.User; import com.example.demo.mapper.UserMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service public class UserService { @Autowired private UserMapper userMapper; public List<User> getUserListByAge(int age) { LambdaQueryWrapper<User> queryWrapper = Wrappers.lambdaQuery(); queryWrapper.eq(User::getAge, age); return userMapper.selectList(queryWrapper); } } ``` 在上面的代码中,我们首先导入了LambdaQueryWrapperWrappers类。然后,在getUserListByAge方法中,我们创建了一个LambdaQueryWrapper对象queryWrapper,并使用eq方法指定了查询条件,即查询年龄等于指定值的用户记录。最后,调用userMapper的selectList方法执行查询操作,并返回查询结果。 这只是LambdaQueryWrapper的一个简单示例,你可以根据实际需求使用其他方法和条件来编写更复杂的查询条件。同时,MyBatis-Plus还提供了很多其他的功能和特性,你可以查阅官方文档来了解更多详情。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

晨犀

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

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

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

打赏作者

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

抵扣说明:

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

余额充值