如何快速上手: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) 表示根据姓氏查询,并按照名字升序排序。

相关推荐
计算机学姐1 小时前
基于python+django+vue的影视推荐系统
开发语言·vue.js·后端·python·mysql·django·intellij-idea
JustinNeil1 小时前
简化Java对象转换:高效实现大对象的Entity、VO、DTO互转与代码优化
后端
luoluoal1 小时前
java项目之基于Spring Boot智能无人仓库管理源码(springboot+vue)
java·vue.js·spring boot
ChinaRainbowSea1 小时前
十三,Spring Boot 中注入 Servlet,Filter,Listener
java·spring boot·spring·servlet·web
2的n次方_1 小时前
掌握Spring Boot数据库集成:用JPA和Hibernate构建高效数据交互与版本控制
数据库·spring boot·hibernate
青灯文案11 小时前
SpringBoot 项目统一 API 响应结果封装示例
java·spring boot·后端
二十雨辰2 小时前
[苍穹外卖]-12Apache POI入门与实战
java·spring boot·mybatis
微尘82 小时前
C语言存储类型 auto,register,static,extern
服务器·c语言·开发语言·c++·后端
计算机学姐2 小时前
基于PHP的电脑线上销售系统
开发语言·vscode·后端·mysql·编辑器·php·phpstorm
码拉松3 小时前
千万不要错过,优惠券设计与思考初探
后端·面试·架构