【SpringBoot实战】整合mongodb

star2017 1年前 ⋅ 1203 阅读

MongoDB是一个开源文件存储数据库,提供高性能,高可用性和自动扩展。示例实现了:CRUD功能,表关联查询,属性名自定义,统计,正则表达式查询。

整体项目

imagepng

pom配置

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.1.1.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.cimu</groupId>
	<artifactId>chapter_mongodb</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>chapter_mongodb</name>
	<description>Demo project for Spring Boot</description>

	<properties>
		<java.version>1.8</java.version>
	</properties>

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

		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<optional>true</optional>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

核心代码

实体类:
User,UserProfile
@Id:主键注解
@DBRef:指定数据表关联,还可以配置是否懒加载
@Field("passwordNew"):mongodb中以该字段作为字段名称

测试类:ChapterMongodbApplicationTests

@RunWith(SpringRunner.class)
@SpringBootTest
public class ChapterMongodbApplicationTests {
    @Autowired
  private MongoTemplate mongoTemplate;

  @Test
 @Rollback(false)
    public void save() {
        User user = new User();
  user.setId(5L);
  user.setName("5");
  user.setPassword("6666");
  mongoTemplate.save(user);
  }

    @Test
 @Rollback(false)
    public void saveUser() {
        User user = new User();
  user.setId(1L);
  user.setName("6");
  Query query = new Query(Criteria.where("id").is(user.getId()));
  Update update = new Update().set("name", user.getName());
  mongoTemplate.updateFirst(query, update, User.class);
  }

    @Test
 @Rollback(false)
    public void deleteById() {
        Query query = new Query(Criteria.where("id").is(1));
  mongoTemplate.remove(query, User.class);
  }

    @Test
  public void selectAll() {
        List userList = mongoTemplate.findAll(User.class);
  System.out.println(userList);
  }

    @Test
  public void selectByName() {
        Query query = new Query(Criteria.where("name").is("5"));
  User userDb = mongoTemplate.findOne(query, User.class);
  System.out.println(userDb);
  }

    @Test
 @Rollback(false)
    public void saveProfile() {
        UserProfile userProfile = new UserProfile();
  userProfile.setId(1L);
  User user = new User();
  user.setId(5L);
  user.setName("6");
  user.setPassword("777");
  userProfile.setUser(user);
  mongoTemplate.save(userProfile);
  }

    @Test
  public void findProfile() {
        List userList = mongoTemplate.findAll(UserProfile.class);
  System.out.println(userList);
  }

    @Test
  public void countUser() {
        Query query = new Query(Criteria.where("name").is("5"));
 long count = mongoTemplate.count(query, User.class);
  System.out.println(count);
  }

    @Test
  public void likeUser() {
        Query query = new Query(Criteria.where("name").regex("^5"));
  List userList = mongoTemplate.find(query, User.class);
  System.out.println(userList);
  }

}

配置

#如果你使用mongodb3.0 那么需要使用这个配置,host port不在支持  如果要配置多个数据库,则中间用","分割
#spring.data.mongodb.uri=mongodb://user:secret@mongo1.example.com:12345,mongo2.example.com:23456/test

#如果你使用mongodb2.0 那么可以使用下面这个配置
spring.data.mongodb.host=xxxxxxx
spring.data.mongodb.port=27017
spring.data.mongodb.database=test

#spring.data.mongodb.authentication-database= # 认证数据库名字.
#spring.data.mongodb.database= #数据库名字
#spring.data.mongodb.field-naming-strategy= # 要使用的FieldNamingStrategy的完全限定名称.
#spring.data.mongodb.grid-fs-database= # GridFS数据库名称.
#spring.data.mongodb.host= # 数据库地址. 不能和URI同时存在.
#spring.data.mongodb.password= # 登录密码. 不能和URI同时存在.
#spring.data.mongodb.port= # 数据库端口. 不能和URI同时存在.
#spring.data.mongodb.repositories.type=auto # 要启用的Mongo存储库的类型.
#spring.data.mongodb.uri=mongodb://localhost/test # 数据库访问地址. 不能和host、post一起存在
#spring.data.mongodb.username= # 登录数据库的用户名.不能和URI同时存在.

源码地址

本文为博主原创文章,未经博主允许不得转载。
更多内容请访问:IT源点

相关文章推荐

全部评论: 0

    我有话说: