在SpringBoot项目中集成MongoDB后的一些基本操作。
本文介绍的内容是Springboot如何集成MongoDB,以及对MongoDB进行基本的增加、查询数据的操作。
提示:以下是本篇文章正文内容,下面案例可供参考
MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个高性能,开源,无模式的文档型数据库,是当前 NoSql 数据库中比较热门的一种。MongoDB 中的一条记录就是一个文档,与JSON类似。
代码如下(示例):
org.springframework.boot spring-boot-starter-data-mongodb
代码如下(示例):
spring.data.mongodb.uri=mongodb://127.0.0.1:27017/admin
3、创建实体类:
package com.hjxmongodb.mongdb.entity; import org.springframework.data.mongodb.core.mapping.Document; import lombok.Data; /** * 包名称:com.hjxmongodb.mongdb.entity * @version 创作时间:2023年11月6日上午11:16:04 * */ @Document @Data public class User { private String id; private String name; private int age; private String gender; private String email; }
package com.hjxmongodb.mongdb.repository; import org.springframework.data.mongodb.repository.MongoRepository; import com.hjxmongodb.mongdb.entity.User; /** * 包名称:com.hjxmongodb.mongdb.repository * @version 创作时间:2023年11月9日上午10:16:06 * */ public interface UserRepository extends MongoRepository{ }
查询代码如下:
package com.hjxmongodb.mongdb; import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Optional; import java.util.Random; import java.util.UUID; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.data.domain.Example; import org.springframework.data.domain.ExampleMatcher; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import com.hjxmongodb.mongdb.entity.User; import com.hjxmongodb.mongdb.repository.UserRepository; /** * 包名称:com.hjxmongodb.mongdb * @version 创作时间:2023年11月9日上午10:58:19 * */ @SpringBootTest public class MongoRepositoryTest { @Autowired private UserRepository userRepository; /** * 批量增加数据 * 使用MongoRepository 批量插入数据 */ @Test void createUsers() { Random random = new Random(); CollectionuserList = new ArrayList (); for (int i = 0; i < 100000; i++) { User user = new User(); user.setId(UUID.randomUUID().toString().replace("-", "")); user.setAge(random.nextInt(22, 50)); user.setGender(random.nextInt(0, 2)+""); user.setName("hjx" + random.nextInt(10000)); user.setEmail("hjx"+random.nextInt(10000)+"wm@163.com"); userList.add(user); } System.out.println("批量插入数据:" + userList.size()); userList = userRepository.insert(userList); System.out.println("保存成功 : " + userList.size()); } @Test void findUser() { System.out.println("使用MongoRepository 来查询数据..."); //查询所有的数据 List userList =userRepository.findAll(); for (User user : userList) { System.out.println(user); } //根据ID查询单个数据 Optional user = userRepository.findById("f777728d4779450e81c30fcf2c38dfe0"); System.out.println(user.get()); } @Test void findByCondition() { System.out.println("根据条件配置来查询数据..."); User user = new User(); user.setAge(32); Example example = Example.of(user); List tempUser =userRepository.findAll(example); System.out.println(tempUser.size()); } @Test void findByConditions() { System.out.println("根据条件模糊查询数据..."); ExampleMatcher exampleMatcher = ExampleMatcher.matching().withStringMatcher(ExampleMatcher.StringMatcher.CONTAINING).withIgnoreCase(true); User userExample = new User(); userExample.setName("99"); userExample.setAge(32); userExample.setGender("1"); Example example = Example.of(userExample,exampleMatcher); List resultList =userRepository.findAll(example); System.out.println(resultList.size()); } @Test void findByPages() { System.out.println("分页查询数据..."); for (int i = 0; i < 10; i++) { Pageable pageable =PageRequest.of(i, 10); User userExample = new User(); userExample.setAge(32); Example example = Example.of(userExample); Page pages =userRepository.findAll(example, pageable); System.out.println(pages.getContent()); System.out.println(pages.getContent().size()); System.out.println(pages.getNumber()); System.out.println(pages.getSize()); System.out.println("------------------------"); } } }
全部代码如下:
package com.hjxmongodb.mongdb; import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Random; import java.util.UUID; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; import org.springframework.data.mongodb.core.query.Update; import com.hjxmongodb.mongdb.entity.User; import com.mongodb.client.MongoCollection; import com.mongodb.client.result.DeleteResult; import com.mongodb.client.result.UpdateResult; /** * 包名称:com.hjxmongodb.mongdb * @version 创作时间:2023年11月9日上午10:09:09 * */ @SpringBootTest public class MongoTemplateTest { @Autowired private MongoTemplate mongoTemplate; static final String collectionName = "user"; @Test void collectionExists() { System.out.println("创建集合,即数据库"); // 判断是否已经存在该集合名称 boolean collectionNameExists = mongoTemplate.collectionExists(collectionName); if (!collectionNameExists) { MongoCollectiondocument = mongoTemplate.createCollection(collectionName); System.out.println(document.toString()); } else { System.out.println(collectionName + " is exists."); } } @Test void create() { System.out.println("批量增加数据..."); Random random = new Random(); Collection userList = new ArrayList (); for (int i = 0; i < 100000; i++) { User user = new User(); user.setId(UUID.randomUUID().toString().replace("-", "")); user.setAge(random.nextInt(22, 50)); user.setGender(random.nextInt(0, 2) + ""); user.setName("hjx" + random.nextInt(10000)); user.setEmail("hjx" + random.nextInt(10000) + "wm@163.com"); userList.add(user); } System.out.println("批量插入:" + userList.size() + "条数据。"); List t = (List ) mongoTemplate.insert(userList, collectionName); System.out.println("保存成功 : " + t.size()); } @Test void findUser() { System.out.println("根据条件查找用户信息..."); Query query = new Query(); Criteria criteria = Criteria.where("age").gte(30); // 年龄等于30 Criteria nameCriteria = Criteria.where("name").regex("99"); // 名称中包括99 Criteria andCriteria = new Criteria(); andCriteria.andOperator(criteria, nameCriteria); query.addCriteria(andCriteria); query.limit(400); List userList = mongoTemplate.find(query, User.class, collectionName); System.out.println(userList.size()); userList.forEach(item -> System.out.println(item)); } @Test void findAll() { System.out.println("分页按条件查询数据...."); Query query = new Query(); Criteria criteria = Criteria.where("age").gte(30); // 年龄大于等于30 Criteria nameCriteria = Criteria.where("name").regex("99"); // 名称中包含有99 Criteria andCriteria = new Criteria(); andCriteria.andOperator(criteria, nameCriteria); query.addCriteria(andCriteria); for (int i = 0; i < 10; i++) { Pageable pageable = PageRequest.of(i, 10);//每页查询10条数据 query.with(pageable); List pages = mongoTemplate.find(query, User.class, collectionName); System.out.println(pages.size()); System.out.println(pages); System.out.println("------------------------"); } } @Test void findallUser() { System.out.println("查询所有数据,循环输出...."); List user = mongoTemplate.findAll(User.class, collectionName); // 第一种循环打印数据的方式: user.forEach(item -> System.out.println(item)); // 第二种循环打印数据的方式: user.forEach(System.out::println); } @Test void update() { System.out.println("更新用户信息..."); Criteria updateCriteria = Criteria.where("age").is(22); Update updateItem = new Update(); updateItem.set("age", 32); UpdateResult result = mongoTemplate.updateMulti(new Query(updateCriteria), updateItem, User.class, collectionName); System.out.println(result.toString()); } @Test void delete() { System.out.println("删除用户信息..."); Criteria updateCriteria = Criteria.where("age").is(35); DeleteResult result = mongoTemplate.remove(new Query(updateCriteria), User.class, collectionName); System.out.println(result); } // @Test void deleteAll() { System.out.println("删除所有用户信息..."); //方式1:删除所有数据 // DeleteResult result = mongoTemplate.remove(new Query(), collectionName); // System.out.println(result); //方式2:删除所有数据,删除集合就可以了。 mongoTemplate.dropCollection(collectionName); } }
以上就是在SpringBoot项目中集成MongoDB后的一些基本操作。本文简单介绍了MongoDB增加、查询、分页查询、删除数据等的操作,希望对伙伴们有一点点帮助。
上一篇:MySQL---视图索引