如何快速上手:springboot+mongodb

当使用 Java Spring Boot 与 MongoDB 时,可以使用 Spring Data MongoDB 来轻松地进行数据库操作。以下是一个简单的示例,演示如何在 Spring Boot 中使用 MongoDB 进行基本的 CRUD(创建、读取、更新、删除)操作。

Spring Data for MongoDB是 Spring Data 的一部分,提供与 MongoDB 文档数据库的集成,提供熟悉且一致的基于 Spring 的编程模型,同时保留存储特定的特性和功能。

特征

  • MongoTemplate:提高常见任务生产力的帮助程序类。
  • 对象映射:功能丰富、注释驱动的对象映射器。
  • 生命周期事件:保存、更新、删除挂钩和事件之前和之后。
  • 数据存储库:存储库接口,包括对自定义查询和聚合的支持。
  • 多文档事务:对多文档修改的托管事务支持。
  • 加密:自动且显式的客户端字段级加密。
  • GridFS:大文件存储。
  • Querydsl:类型安全的查询集成。
  • Kotlin:丰富开发人员体验的扩展。

1.Maven配置

增加Maven依赖:

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

2.配置 MongoDB 连接

确保在 application.propertiesapplication.yml 文件中配置 MongoDB 的连接信息:

spring.data.mongodb.host=127.0.0.1
spring.data.mongodb.port=27017
spring.data.mongodb.database=mydb1

3.创建实体类

创建一个简单的实体类来映射 MongoDB 中的文档:

@Data
@Document
public class Customer {

	private String id, firstname, lastname;

	/**
	 * 使用给定的名字和姓氏创建新的Customer。
	 */
	public Customer(String firstname, String lastname) 

		this.firstname = firstname;
		this.lastname = lastname;
	}
}

4.创建 Repository 接口

创建一个继承自 MongoRepository 的 Repository 接口,用于操作 User 实体类:

public interface CustomerRepository extends CrudRepository<Customer, String> {

	/**
	 * 使用Lastnameso,并支持排序
	 * @param lastname
	 * @param sort
	 * @return
	 */
	List<Customer> findByLastname(String lastname, Sort sort);
}

5.创建 CustomerRepositoryTest类

创建一个 CustomerRepositoryTest 类,测试接口功能,可以在此实现对数据库的操作:

@DataMongoTest
class CustomerRepositoryIntegrationTest {

	@Autowired CustomerRepository customerRepository;
	private Customer dave, oliver, carter;

	@BeforeEach
	void setUp() {
		customerRepository.deleteAll();

		dave = customerRepository.save(new Customer("Dave", "Matthews"));
		oliver = customerRepository.save(new Customer("Oliver August", "Matthews"));
		carter = customerRepository.save(new Customer("Carter", "Beauford"));
	}

	/**
	 * Test case to show that automatically generated ids are assigned to the domain objects.
	 */
	@Test
	void setsIdOnSave() {

		var dave = customerRepository.save(new Customer("Dave", "Matthews"));
		assertThat(dave.getId()).isNotNull();
	}

	/**
	 * Test case to show the usage of the Querydsl-specific {@link QSort} to define the sort order in a type-safe way.
	 */
	@Test
	void findCustomersUsingQuerydslSort() {
		var result = customerRepository.findByLastname("Matthews", Sort.by("firstname"));

		assertThat(result).hasSize(2);
		assertThat(result.get(0)).isEqualTo(dave);
		assertThat(result.get(1)).isEqualTo(oliver);
	}

}

执行findCustomersUsingQuerydslSort后可以看到断点中result的值:

Spring Data是一个用于简化数据访问的项目,它提供了一种基于Repository模式的方式来访问各种不同种类的数据存储。Spring Data Repositories 可以通过命名规则自动生成查询方法,这使得开发者能够轻松地进行数据库操作而无需手动实现查询方法。

👉补充知识💬

以下是Spring Data Repository中方法的命名规则:

  1. 前缀关键字:
  • find: 表示查询操作,findById、findAll、findAllById。
  • delete: 表示删除操作,deleteById、deleteAll。
  • save:表示保存。
  1. 属性表达式:
  • 方法的后缀是实体类的属性名称,用于指定查询的条件。

例如,findByLastName(String lastName) 表示根据姓氏查询。

  1. And 和 Or:
  • 使用 AndOr 连接属性表达式,表示"与"和"或"关系。

例如,findByFirstNameAndLastName(String firstName, String lastName) 表示根据名字和姓氏进行查询。

  1. OrderBy:
  • 使用 OrderBy 可以指定查询结果的排序方式。

例如,findByLastNameOrderByFirstNameAsc(String lastName) 表示根据姓氏查询,并按照名字升序排序。

相关推荐
苹果醋328 分钟前
Java8->Java19的初步探索
java·运维·spring boot·mysql·nginx
Wx-bishekaifayuan43 分钟前
django电商易购系统-计算机设计毕业源码61059
java·spring boot·spring·spring cloud·django·sqlite·guava
customer081 小时前
【开源免费】基于SpringBoot+Vue.JS周边产品销售网站(JAVA毕业设计)
java·vue.js·spring boot·后端·spring cloud·java-ee·开源
Yaml42 小时前
智能化健身房管理:Spring Boot与Vue的创新解决方案
前端·spring boot·后端·mysql·vue·健身房管理
LuckyLay2 小时前
Spring学习笔记_27——@EnableLoadTimeWeaving
java·spring boot·spring
小码编匠3 小时前
一款 C# 编写的神经网络计算图框架
后端·神经网络·c#
AskHarries3 小时前
Java字节码增强库ByteBuddy
java·后端
佳佳_3 小时前
Spring Boot 应用启动时打印配置类信息
spring boot·后端