Mybatis的criteria

2024/05/04

criteria实现多条件筛选

思路:多个if

if (StringUtils.isNotEmpty(column1)) {
    criteria.and字段EqualTo(column1);
}

criteria实现模糊查询

思路:首尾拼接%

if (StringUtils.isNotEmpty(name)) {
    criteria.andNameLike(% + sname + %);
}

 criteria实现批量查询

思路:使用and字段xxxIn

if (CollectionUtils.isNotEmpty(nameList)) {
    criteria.andNameTypeIn(nameList);
}

实现 

吊你卤味:把那块卤味(腊肉)吊起来

原理

创建查询的条件:

Criteria criteria = new Criteria();
criteria.createCriteria().andXX1EqualTo(XX1).andXX2EqualTo(XX2);

根据条件调用mybatis的接口:

xxxMapper.selectByExample(criteria);

例子

我需要根据姓名的List集合,查询出对应的对象List

1.创建nameList:

List<String>姓名List = 
对象List.stream().map(对象::getName).collect.(Collectors.toList());

2.根据姓名List,写critedia:

Criteria criteria = new Criteria();
criteria.createCriteria().and姓名In(姓名List);

3.调用mybatis已经实现的接口,查出对象List:

Mapper.selectByExample(criteria);

其中,selectByExample方法是这样的:
List<对象> selectByExample(Criteria criteria);

到此,我们已经查询出需要的对象List了。

扩展

假设我们的对象2有名字name跟年龄age两个属性。在某个对象中,只有名字name,我们需要将

name对应的age填充上去,该怎么做。

1.先建立姓名和年龄的map

Map<String, Integer> nameAndAgeMap = 
对象List.stream.collect(Collectors.toMap(对象::getName, 对象::getAge));

2.给对象2塞年龄age

for (对象2 大傻春: 对象2List) {
    if (nameAndAgeMap .containsKey(大傻春.getName())) {
        大傻春.setAge(nameAndAgeMap .get(大傻春.getName());
    }
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值