Java学习
- 每日学习
-
- LambdaQueryWrapper
- 将列表中的一个字段保存成列表
- 将列表转换为map
- 将列表传入到sql语句中,作为in的值
- 一个类的列表,根据一个字段分组,再将小组中相同的字段累加,一组返回一个对象
- 插入一条记录
- .compareTo()方法
- 将对象列表根据某一个字段进行排序
- left join两边都是select子句,怎样优化SQL
- natural join与join
- 二维Int数组怎样转为List<List<Integer>>
- SQL 时间字段匹配,日期匹配
- 需要两张表中的属性,可以不用连接两张表
- 两个List中的数据进行匹配
- select语句中不建议使用sum(case when then else end) as 别名
- sql语句foreach
- 数据表里的时间前后端匹配
- List可以与Map做匹配,用stream()流
- List也可以判断是否包含字段,用contains
- stream().sorted()
- sql的字段连接
- sql判断是否为null,是null怎么样 不是null又怎么样
- excel的导出Excel功能
- sql 关键字作为字段
每日学习
LambdaQueryWrapper
- 条件1 and (条件2(值不为null) or 条件3(值不为null))
.nested()作为括号,确定优先级
LambdaQueryWrapper<sql语句返回的类> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(sql语句返回的类::get指定字段,query.get指定字段)
.nested(i->i.isNotNull(sql语句返回的类::get指定字段).or().isNotNull(sql语句返回的类::get指定字段));
最后的SQL语句会是条件1值相等 and (值2 is not null or 值3 is not null)
- 根据某个字段进行排序
.orderByDesc()
,sql语句的最后部分.last()
.last()一般可以写limit 1 对记录数进行限制。IService的getOne方法不会只返回1条记录,要用limit 1 进行限制,那getOne方法有什么作用?
答:getOne方法如果sql返回的结果不止一条,会报错,如果想取返回的第一条,可以增加一个参数,false
在这个方法中
- LambdaQueryWrapper IService.getOne()是如何与表进行绑定,怎么知道查询哪张表?
- .eq()方法可以传入三个参数,第一个参数传入一个状态,一般可以用来判断是否为空,不是空进行字段值的匹配,是空,不进行下一步,第二个参数是sql语句中的字段,第三个参数是传入的参数
- 排序方法,.orderByAsc(“”)可以叠加使用,一个连接一个使用
将列表中的一个字段保存成列表
用stream().map()
List<String> idList = list.stream().map(list中的类class::get指定字段).distinct().collect(Collectors.toList());
将列表转换为map
Collectors.toMap(获取字段,a->a,(b1,b2)->b1)
指的是如果获取字段作为key值有重复,最后一个参数表明直接取第一个
将列表传入到sql语句中,作为in的值
- XXquery类中增加一个
List<String>
queryList; - 在设定list之前,需要对list进行空值,null值判断,如果是空的就不用传到sql中执行
if(list == null || list.size() == 0){
return ;
- 在处理数据时,将query.setList(指定list)
- 将query设置为service一个方法的参数
- 在SQL语句中对queryList做判断
<if test="query.queryList != null and query.queryList.size() >0">
AND id IN
<foreach collection = "query.queryList" item="ids" open="(" separator="," close=")">
#{ids}
</foreach>
</if>
一个类的列表,根据一个字段分组,再将小组中相同的字段累加,一组返回一个对象
Map<String,对象> map = new HashMap<>();
for(对象 o : list){
// 从对象中按照某一规则拿出key
String key = o.get指定字段();
if(map.containsKey(key)