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,一个浏览器就可以随时随地的发挥创意,规划工作,解放您的双手,让您腾出双手去成就别人的梦想。
You’ve reached the end of replies
热门话题
话题
分类
活跃