1 创建数据库
进入mongodb中创建数据库和用户
# (1)授权
# 我的管理员是root,密码是123456
db.auth("root", "123456")
# (2)创建应用数据库和用户
# 连接库直接使用相应库中的用户名称即可,如果仅仅使用appdb库,直接使用user=mason,pwd=123456连接即可
use appdb
db.createUser({user:'mason', pwd:'123456', roles:[ {role:'dbOwner', db:'appdb'} ]})
2 application.yml
此处使用的是Mongodb自动装配
# 注意下的这种方式不能连接
# 因为此方法默认连接的权限机制是 mechanism=SCRAM-SHA-256
#spring:
# data:
# mongodb:
# host: 192.168.108.60
# port: 27017
# username: mason
# password: 123456
# database: appdb
spring:
data:
mongodb:
# mongodb://用户名:密码@IP地址:27017/数据库
uri: mongodb://mason:123456@192.168.108.60:27017/appdb
# 可以不用设置数据库
# database: appdb
3 pom.xml
<?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 https://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.2.5.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>mason.com</groupId>
<artifactId>mymongo</artifactId>
<version>1.0.0</version>
<name>mymongo</name>
<description>mymongo project for Spring Boot</description>
<properties>
<java.version>11</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<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>
<version>1.18.12</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<version>2.2.5.RELEASE</version>
<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>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
</project>
4 Dao
import org.springframework.data.mongodb.repository.MongoRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface BookDao extends MongoRepository<Book,Integer> {
}
5 Entity
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
@Document("book")
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Book {
@Id
private Long id;
private String title;
private Integer page;
}
6 应用测试
@SpringBootTest
class MymongoApplicationTests {
@Autowired
private BookDao bookDao;
@Test
void contextLoads() {
// 插入一条数据
Book book = new Book(2L,"zhongguo",8);
bookDao.save(book);
// 查询一条数据
Example<Book> example = Example.of(book);
Optional<Book> one = bookDao.findOne(example);
System.out.println(one);
}
}
7 截图
8 遇到的问题
如果上面的方法,一直连不上数据库,可以重启一下机器。
com.mongodb.MongoSocketOpenException: Exception opening socket
…………
Caused by: java.net.ConnectException: Connection refused: connect