网上搜了好久并没有找到类似的问题,记录一下。
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,就解决这个问题了。