springboot工程中mongodb使用MongoRepository时嵌套对象的查询方法记录

坑,好大的一个坑,来的先甩个赞

 

先把model扔出来

package com.taikang.domain;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

/**
 * @Author: LiuYan
 * @Description:
 * @Date: Created in 17:01 2019/4/11
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class TestModel {

    private String _id;
    private String score;
    private List<HahaModel> list;
}
package com.taikang.domain;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * @Author: LiuYan
 * @Description:
 * @Date: Created in 17:03 2019/4/11
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class HahaModel {

    private String age;
    private String name;
}

在mongo库里存储了几个数据

package com.taikang.dao;

import com.taikang.domain.TestModel;
import org.springframework.data.mongodb.repository.MongoRepository;
import org.springframework.data.mongodb.repository.Query;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * @author itw_liuyan01
 * @create 2018-01-08 14:41
 * @desc 智能提醒调用的原子服务
 */
@Repository
public interface TestDao extends MongoRepository<TestModel, String> {

    @Query(value = "{'list.name':'?0','list.age':'?1'}")
    List<TestModel> find(String name, String age);

}

注意啊

"{'list.name':'?0','list.age':'?1'}"

?0这个是占位符,对应方法里的name,?1就是age呗

你其实还可以指定@query里的field,这个是指定查出来哪个值返回给你,具体的别人都写过,搜一下都有

我要说的是?0两边一定要加'',不然条件是两个的时候是会报错的

 

要是就一个"{'list.name':?0}"你这么写也没毛病

这不就查出来了,你要是指定@Query了方法名好像注意点别用by这by那得就行最好别冲突springdata那种命名方式。

 

下面再来几个链接可以看看:

https://www.jianshu.com/p/24a44c4c7651

https://blog.csdn.net/zhou_xuexi/article/details/77963814

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值