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

  • 17
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

栈江湖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值