Java中简单使用MongoRepository操作MongoDB

Java中简单使用MongoRepository操作MongoDB

前提:SpringBoot项目

添加依赖

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-mongodb</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
    </dependency>

    <dependency>
        <groupId>joda-time</groupId>
        <artifactId>joda-time</artifactId>
        <version>2.10.1</version>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
        <exclusions>
            <exclusion>
                <groupId>org.junit.vintage</groupId>
                <artifactId>junit-vintage-engine</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
</dependencies>

applicatin.properties

spring.data.mongodb.uri=mongodb://192.168.109.139:27017/test
# mongodb://你的主机:你的mongo端口/对应Mongo数据库

实体类

@Data
@Document("User") // 对应数据库表
public class User {
    @Id	
    private String id;	// _id字段 由Mongo自动生成
    private String name;
    private Integer age;
    private String email;
    private String createDate;
}

定义 Repository接口

public interface UserRepository extends MongoRepository<User,String> {
}

注入UserRespositoty对象

    @Autowired
    private UserRepository userRepository;

添加或修改

@Test
public void add() {
    User user = new User() ;
    user.setAge(45);
    user.setName("lihua");
    user.setEmail("4523@qq.com");
    // 如果有id的为修改,无id为添加
    User save = userRepository.save(user);
    System.out.println(save);
}

查询所有

@Test
void findAll() {
    List<User> all = userRepository.findAll();
    System.out.println(all);
}

根据Id查询

@Test
void findById() {
    // Optional为Java8新特性用于防治空指针异常
    Optional<User> userOptional = userRepository.findById("604dbbd87010e778b026ebe2");
    System.out.println(userOptional.get());
}

条件查询

@Test
void find() {
    User user = new User();
    user.setName("lihua");
    user.setAge(45);
    // 全and
    Example<User> example = Example.of(user);
    List<User> userList = userRepository.findAll(example);
    System.out.println(userList);
}

模糊查询

@Test
void findLike() {
    // ExampleMatcher.StringMatcher.CONTAINING 模糊匹配
    // withIgnoreCase 忽略大小写
    ExampleMatcher matcher = ExampleMatcher.matching()
        .withStringMatcher(ExampleMatcher.StringMatcher.CONTAINING)
        .withIgnoreCase(true);

    User user = new User();
    user.setName("li");
    Example<User> example = Example.of(user,matcher);

    List<User> userList = userRepository.findAll(example);

    System.out.println(userList);

}

分页查询

@Test
void findPage() {
    // 定义排序规则
    Sort sort = Sort.by(Sort.Direction.DESC,"age");
    // 分页规则(第几页(0开始), 多少个,排序规则)
    PageRequest page = PageRequest.of(0, 3, sort);
    ExampleMatcher matcher = ExampleMatcher.matching()
                    .withStringMatcher(ExampleMatcher.StringMatcher.CONTAINING)
                    .withIgnoreCase(true);

    User user = new User();
    user.setName("li");
    Example<User> example = Example.of(user , matcher);
    Page<User> userPage = userRepository.findAll(example, page);

    System.out.println(userPage.getTotalElements());
    System.out.println(userPage.getContent());
}

删除

@Test
void delete() {
    userRepository.deleteById("604dbbd87010e778b026ebe2");
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MongoRepository是Spring Data MongoDB提供的一个接口,用于简化与MongoDB数据库的交互。它提供了一组通用的CRUD(创建、读取、更新、删除)操作方法,可以直接在Repository接口使用。\[1\]通过继承MongoRepository接口,并指定实体类和主键类型,我们可以轻松地进行数据库操作。例如,我们可以定义一个PersonRepository接口,继承MongoRepository<Person, String>,其Person是实体类,String是主键类型。\[1\] 对于查询操作MongoRepository提供了一些默认的查询方法。例如,如果我们想根据name查询Person对象,可以在PersonRepository接口定义一个方法,使用findByXxx的命名规则,如findByName。\[2\]这样,我们就可以在service调用personRepository.findByName(name)来查询符合条件的Person对象。 此外,MongoRepository还提供了一些其他的查询方法,如findAll()用于查询所有数据。\[3\]通过在Repository接口定义这些方法,我们可以方便地进行数据库操作,而无需编写复杂的查询语句。 总之,MongoRepository是Spring Data MongoDB提供的一个接口,用于简化与MongoDB数据库的交互。它提供了一组通用的CRUD操作方法,以及一些默认的查询方法,可以方便地进行数据库操作。 #### 引用[.reference_title] - *1* *2* *3* [Java操作MongoDB采用MongoRepository仓库进行条件查询](https://blog.csdn.net/qq_38288606/article/details/78673528)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值