mongodb学习一(使用mongoResposity)
最近公司做一个项目用到了mongodb,下面来介绍一下MongoRepository接口。
大家可以类比Hibernate的jpa,MongoRepository是一个springdata提供的一个有增删改查以及分页等操作的基本接口。
我们在使用接口时,只需要定义一个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;