java mongoTemplate 查询条件为空判断查询

本文介绍在MongoDB中如何实现MyBatis的<if>条件判断功能,通过Query对象和Criteria动态添加查询条件,避免使用and操作符。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

网上搜了好久并没有找到类似的问题,记录一下。

mybatis的mapper查询中,有一个可以判断传入参数为空,则不加此where的方法,就是<if></if>,如下:

<if test="phones != null and !phones.isEmpty()">
            <foreach collection="phones" item="phone" index="index"
                     open="(" close=")" separator=",">
                #{phone}
            </foreach>
        </if>

在使用mongodb数据库时如何进行类似的操作呢?

注意:请不要使用and,请不要使用and,请不要使用and!使用and的代码如下:

不使用and就可以实现mybatis的if功能,就这么简单!!!

@Override
    public List<Music> findByNameArtistAlbum(String name, String artistName, String albumName) {
        Query query = new Query();
        if (!name.isEmpty()) {
            query.addCriteria(Criteria.where("name").is(name));
        }
        if (!artistName.isEmpty()) {
            query.addCriteria(Criteria.where("artists.name").is(artistName));
        }
        if (!albumName.isEmpty()) {
            query.addCriteria(Criteria.where("album.name").is(albumName));
        }
        return mongoTemplate.find(query,Music.class);
    }

具体内部不用细看,就是不要使用and,就解决这个问题了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值