MongoDB(四)——MongoTemplate操作MongoDB


MongoTemplate操作MongoDB

集成簡介

spring-data-mongodb提供了MongoTemplateMongoRepository兩種方式訪問mongodb,MongoRepository操作簡單,MongoTemplate操作靈活,我們在項目中可以靈活適用這兩種方式操作mongodb,MongoRepository的缺點是不夠靈活,MongoTemplate正好可以彌補不足。

搭建開發環境

1、創建springboot項目

2、導入依賴

<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>

3 添加application配置

spring.data.mongodb.uri=mongodb://192.168.217.128:27017/test

4.添加實體

@Data
@Document("User")
public class User {

 @Id
 private String id;
 private String name;
 private Integer age;
 private String email;
 private String createDate;
}

添加操作

package com.study;

import com.study.mongodb.entiity.User;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.mongodb.core.MongoTemplate;

@SpringBootTest
class SpringbootMongoDbApplicationTests {

    //注入mongoTemplate
    @Autowired
    private MongoTemplate mongoTemplate;

    //添加操作
    @Test
    void create() {
        User user = new User();
        user.setAge(20);
        user.setName("zhangsan");
        user.setEmail("963330213@qq.com");
        User insert = mongoTemplate.insert(user);
        System.out.println(insert);
    }
}

image

查詢操作

1.查詢所有

//查詢所有
@Test
public void findAll(){
    List<User> userList = mongoTemplate.findAll(User.class);
    System.out.println(userList);
}

image

2.根據id查詢

//根據id查詢
@Test
public void findId(){
    User user = mongoTemplate.findById("611a1cf8d5ba747098ff4625", User.class);
    System.out.println(user);
}

image

3.條件查詢

//條件查詢
@Test
public void findUserList(){
    //name = zhangsan and age =20
    Query query = new Query(Criteria.where("name").is("zhangsan").and("age").is(20));
    List<User> userList = mongoTemplate.find(query, User.class);
    System.out.println(userList);
}

image

4.模糊查詢

    //模糊查詢
    @Test
    public void findLikeUserList(){
        //name like zhangsan
        //regex(Pattern)正則表達式
        String name = "hangsan";
        String regex = String.format("%s%s","^.*",name);
        Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
        Query query = new Query(Criteria.where("name").regex(pattern));
        List<User> userList = mongoTemplate.find(query, User.class);
        System.out.println(userList);
    }

image

5.分頁查詢

    //分頁查詢
    @Test
    public void findPageUserList(){
        int pageNo = 1;
        int pageSize = 3;
        //條件構建
        String name = "hangsan";
        String regex = String.format("%s%s","^.*",name);
        Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
        Query query = new Query(Criteria.where("name").regex(pattern));
        //分頁構建
        //查詢記錄數
        long count = mongoTemplate.count(query, User.class);
        //分頁
        List<User> userList = mongoTemplate.find(query.skip((pageNo - 1) * pageSize).limit(pageSize), User.class);
        System.out.println(count);
        System.out.println(userList);
    }

image

修改操作

    //修改
    @Test
    public void updateUser(){
        //根據id查詢數據
        User user = mongoTemplate.findById("611a1cf8d5ba747098ff4625", User.class);
        //設置修改的值
        user.setName("lisi");
        user.setAge(18);
        //調用方法實現修改操作
        Query query = new Query(Criteria.where("_id").is(user.getId()));
        Update update = new Update();
        update.set("name",user.getName());
        update.set("age",user.getAge());
        UpdateResult upsert = mongoTemplate.upsert(query, update, User.class);
        long count = upsert.getModifiedCount();
        System.out.println(count);
    }

image

image

刪除操作

    //刪除操作
    @Test
    public void deleteUser(){
        Query query = new Query(Criteria.where("_id").is("611a1cf8d5ba747098ff4625"));
        DeleteResult remove = mongoTemplate.remove(query, User.class);
        long deletedCount = remove.getDeletedCount();
        System.out.println(deletedCount);
    }

image

image


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM