最近公司做一个项目用到了mongodb,下面来介绍一下MongoRepository接口。

大家可以类比Hibernate的jpa,MongoRepository是一个springdata提供的一个有增删改查以及分页等操作的基本接口。

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

我们在使用接口时,只需要定义一个dao层的接口,例如:

interface UserResposity extends MongoRepository<User, String>{},   User是一个entity实体类。

下面贴上User实体类,@Data这个是Lombok提供的注解,就可以免除生成get,set方法等操作

 @Data
    @Document(collection = "User")
    public class User implements Serializable {

        @Id
        private String id;

        /**
         * 电话
         */
        @Indexed(unique = true)
        private String telephone;


        /**
         * 昵称
         */
        @Indexed
        private String nickname;

        /**
         * 头像地址
         */
        private String avatar;


        /**
         * 出生日期
         */
        private Long birthday;

    }

我们要做的是书写对应的接口即可。UserResposity接口代码如下:要在接口继承MongoRepository类

1 @Repository
2 public interface UserRepository extends MongoRepository<User, String> {
3 
4     User findByTelephone(String telephone);
5 }

我们只需要书写接口,不用自己去写接口的实现。例如findByTelephone方法,telephone是User类的一个属性

接口方法的基本命名方式为  find + By + 实体类属性名(首字母大写)+查询条件(首字母大写)

查询条件就是Like,用过SQL的大家都知道,就是模糊查询的意思。

例如模糊查询电话号码,如下:

User findByTelephoneLike(String telephone);

还有GreaterThan(大于) ,LessThan(小于) ,Between(在...之间), IsNotNull, NotNull(是否非空),Near(查询地理位置相近的)等。具体查看官网文档 https://docs.spring.io/spring-data/mongodb/docs/1.10.13.RELEASE/reference/html/#repositories.definition

如果需要查询的方法有多个字段可以用And来连接即可。

如果要使用这个接口,需要把接口注入。代码如下:

@Autowired  
private UserRepository userRepository;

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄