lambda四种表达形式

前言

使用了lambda表达式 可以通过方法引用的方式来使用实体字段名的操作,避免直接写数据库表字段名时的错写名字;


一、LambdaQueryWrapper<>


/**
     * lambda 条件构造器
     * 生成的sql语句 SELECT id,name,age,email,manager_id,create_time FROM user WHERE name LIKE ? AND age < ?
     */
    @Test
    public void selectLambda() {
        //创建lambda 条件构造器 的三种方法
//        LambdaQueryWrapper<User> lambda2 = new LambdaQueryWrapper<>();
//        LambdaQueryWrapper<User> lambda = new QueryWrapper<User>().lambda();
        LambdaQueryWrapper<User> lambda3 = Wrappers.<User>lambdaQuery();
        lambda3.like(User::getName, "雨").lt(User::getAge, 40);
        List<User> users = userMapper.selectList(lambda3);
        users.forEach(System.out::println);


    }


二、QueryWrapper<实体>().lambda()


/**
 * 名字为王姓并且(年龄小于40并且邮箱不为空)
 * name like '王%' and (age <40 or email in not null)
 * 生成的sql语句 SELECT id,name,age,email,manager_id,create_time FROM user WHERE name LIKE ? AND age < ?
 */
@Test
public void selectLambda2() {
    LambdaQueryWrapper<User> lambda3 = Wrappers.<User>lambdaQuery();
    lambda3.likeRight(User::getName, "王").and(qw -> qw.lt(User::getAge, 40).or().isNotNull(User::getEmail));

    List<User> users = userMapper.selectList(lambda3);
    users.forEach(System.out::println);


}


三、Wrappers.<实体>lambdaQuery()



/**
 * 自定义sql 使用
 * Dao层  代码:
 *
 * @Select("select * from ${ew.customSqlSegment}")
 * List<User> selectAll(@Param(Constants.WRAPPER)Wrapper<User> wrapper);
 */
@Test
public void selectLambda4my() {
    LambdaQueryWrapper<User> lambda3 = Wrappers.<User>lambdaQuery();
    lambda3.likeRight(User::getName, "王").and(qw -> qw.lt(User::getAge, 40).or().isNotNull(User::getEmail));

    List<User> users = userMapper.selectAll(lambda3);
    users.forEach(System.out::println);


}


四、LambdaQueryChainWrapper<实体>(xxxxMapper)


/**
 * lambda 条件构造器第四种创建方式 MP 3.0.7 新增的方式
 * 生成的sql语句 SELECT id,name,age,email,manager_id,create_time FROM user WHERE name LIKE ? AND age >= ?
 * 这个例子可以看出  代码更简洁了
 * 生成的sql语句 SELECT id,name,age,email,manager_id,create_time FROM user WHERE name LIKE ? AND age >= ?
 */
@Test
public void selectLambda3() {
    List<User> users = new LambdaQueryChainWrapper<User>(userMapper)
            .like(User::getName, "雨").ge(User::getAge, 20).list();

    users.forEach(System.out::println);
}


————————————————

版权声明:本文为CSDN博主「掌握月」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/weixin_44472810/article/details/105649901

帖子状态

话题参与者

回复显示排序:

给大家安利一款免费的在线流程图设计软件:贼好用 ProcessFlow — 免费在线作图、实时协作 ProcessFlow是一个在线作图工具的聚合平台, 它可以在线画流程图、思维导图、UI原型图、UML、网络拓扑图、组织结构图等等, 您无需担心下载和更新的问题, 不管Mac还是Windows,一个浏览器就可以随时随地的发挥创意,规划工作,解放您的双手,让您腾出双手去成就别人的梦想。

Finally!
有没有特别的设计建议或更新的指南?
Finally!
您好,这边没有的。
tesla02 best answer
6 Jan,2019
Finally!
有没有特别的设计建议或更新的指南?
此帖子已被版主标记,收到太多否决票。

这是太大的预览图像,它应该更小,甚至五行。在一个页面上有30到60个页面,它是1800个项目 类别例如在附加组件类别有22749个项目,为什么不看到所有的项目,但只有那1800个项目?这是件坏事。

看起来您是个新人,欢迎免费注册社区,加入我们的大家庭,一起学习,一起成长。
提交你的评论
System.out.println("请输入你的代码块...");
话题
分类
喜欢
回复
浏览
活跃
原创社区
985
0
1.5k
原创社区
985
1
1.5k
20/12/25 22:32:21
javaWeb
985
1
1.5k
20/06/15 22:09:21
youtube
698
78
2.1k
3d
Settings

请插入代码块