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

相关推荐
天之涯上上4 分钟前
JAVA开发 在 Spring Boot 中集成 Swagger
java·开发语言·spring boot
白宇横流学长6 分钟前
基于SpringBoot的停车场管理系统设计与实现【源码+文档+部署讲解】
java·spring boot·后端
kirito学长-Java11 分钟前
springboot/ssm太原学院商铺管理系统Java代码编写web在线购物商城
java·spring boot·后端
中草药z28 分钟前
【Spring】深入解析 Spring 原理:Bean 的多方面剖析(源码阅读)
java·数据库·spring boot·spring·bean·源码阅读
程序猿-瑞瑞43 分钟前
24 go语言(golang) - gorm框架安装及使用案例详解
开发语言·后端·golang·gorm
m0_748256781 小时前
SpringBoot 依赖之Spring Web
前端·spring boot·spring
组合缺一1 小时前
Solon v3.0.5 发布!(Spring 可以退休了吗?)
java·后端·spring·solon
猿来入此小猿1 小时前
基于SpringBoot在线音乐系统平台功能实现十二
java·spring boot·后端·毕业设计·音乐系统·音乐平台·毕业源码
愤怒的代码1 小时前
Spring Boot对访问密钥加解密——HMAC-SHA256
java·spring boot·后端
栗豆包1 小时前
w118共享汽车管理系统
java·spring boot·后端·spring·tomcat·maven