这是我参与8月更文挑战的第26天,活动详情查看:8月更文挑战
1.lambda基础内容
- lamada lamada是java8的新特性,优化代码结构,可读性也很好。 其主要特征有:
可选类型声明:不需要声明参数类型,编译器可以统一识别参数值
可选的参数圆括号: 一个参数无需定义圆括号,但多个参数需要定义圆括号
可选的大括号: 如果主体包含了一个语句,就不需要使用大括号
可选的返回关键字: 如果主体只有一个表达式返回值则编译器会自动返回值,大括号需要指定明表达式返回了一个数值。
简而言之,如果只有一个参数左边括号可省略,一个语句,右边大括号可省略。
其语法格式如下:
(parameters) -> expression 或 (parameters) ->{ statements; }
parameters:左边括号中的参数和一般方法传入的参数一样
expression:表达式 主要包含的是相关语法
- 例子 下面的例子只是一些简单的使用lamda表达式,若想要了解更多lamda的内容 可以去网上搜索学习。
//无参数返回
(String s) -> System.out.print(s)
//接受一个 string 对象,并在控制台打印,不返回任何值(看起来像是返回void)
() -> 5 //返回5
x -> 2 * x //传一个参数 返回x的2倍
(x, y) -> x – y //传2个参数 返回两个参数之差 对于没有传入参数类型 则会根据上下文去判断传入的类型
(int x, int y) -> x + y //返回两个整形参数 返回两数之和
2.mybatis-plus中的lamda表达式
查询语句:select * from t_base_info where age < 18;
- 常规的写法 把需要拼凑的条件相应的对着写好 最后查询内容(这样些的查询语句不能将数据库字段写错 若字段写错 查询将出错) 使用lamda表达式可以避免用数据库字段去查询
QueryWrapper<BaseInfo> queryWrapper = new QueryWrapper();
queryWrapper.lt("age",18);
List<BaseInfo> baseInfos1 = baseMapper.selectList(queryWrapper);
- LambdaQueryWrapper 使用这个表达式,所有的查询条件只需要一个表达式即可完成(但是这里的查询条件比较少 若有多条件通过连接服and或者or);UpdateWrapper中是获取LambdaUpdateWrapper
LambdaQueryWrapper<BaseInfo> lambdaQueryWrapper = Wrappers.lambdaQuery();
lambdaQueryWrapper.lt(BaseInfo::getAge,18);
List<BaseInfo> baseInfos = baseMapper.selectList(lambdaQueryWrapper);
- QueryWrapper.lambda
LambdaQueryWrapper<BaseInfo> lambda = new QueryWrapper<BaseInfo>().lambda();
lambdaQueryWrapper.lt(BaseInfo::getAge,18);
List<BaseInfo> baseInfoList = baseMapper.selectList(lambdaQueryWrapper);
- LambdaQueryChainWrapper(链式调用 lambda 式。注意:不支持 Kotlin )
List<BaseInfo> list = new LambdaQueryChainWrapper<>(baseMapper)
.lt(BaseInfo::getAge, 18)
.list();
3.总结
lamda是java8的一个新特性,在mybatis-plus中也支持lamda表达式。今天主要想分享的是mybatis-plus中的lamda写法,对于涉及一些简单的查询语句 可以尝试使用mybatis-plus的lamda写法,使用lamda表达式 代码简洁,也可以避免使用数据库的字段。若sql语句逻辑复杂,则就要视情况而定