SpringBoot整合MongoDB
springboot整合MongoDB
一、docker安装mongodb
1、拉取最近的镜像
docker pull
2、初始化mongo容器
-d 后台运行
-p 端口映射
--name 容器名称
--restar docker每次重启后,该容器也启动
-e 参数设置
初始化用户名为root 密码为147258369
docker run -d -p 27017:27017 --name mongo01 --restart=always -e MONGO_INITDB_ROOT_USERNAME=root -e MONGO_INITDB_ROOT_PASSWORD=147258369 mongo
3、每个数据库有独立的账号和密码
①进入容器
docker exec -it 容器id bash
②进入mongo
mongo
③切换到admin数据库
use admin
④添加用户操作的对应数据库
db.createUser({user:"admin",pwd:"xiiasdfiik34",roles:[{role: 'root', db: 'admin'}]})
⑤ 验证
db.auth('admin', 'xiiasdfiik34') // 返回1 就是认证成功
二、使用MongoRepository
1、pom.xml
spring-boot-starter-data-mongodb
<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>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
2、yaml配置
spring:
data:
mongodb:
# mongodb每个库都有自己的认证方式
authentication-database: lc
username: root
password: 147258369
port: 27017
database: lc
uri: mongodb://root:147258369@47.96.141.44:27017/lc
# host: 47.96.141.44
3、实体
@Getter
@Setter
@ToString
public class Book {
private Integer id;
private String name;
private String author;
}
4、dao接口
/**
* 继承MongoRepository
* 第一个参数为 操作的实体
* 第二个参数为 操作的主键类型
*/
public interface BookDao extends MongoRepository<Book,Integer> {
/**
* 和jap一致 遵循方法名称的表达式进行查询
* @param name
* @return
*/
List<Book> findBooksByNameContaining(String name);
}
5、测试使用
@RunWith(SpringRunner.class)
@SpringBootTest(classes = RedisApplication.class)
public class mongoTest {
@Autowired
private BookDao bookDao;
//插入一条数据
@Test
public void Test1() {
Book b = new Book();
b.setId(3);
b.setName("红楼梦");
b.setAuthor("曹雪芹");
bookDao.insert(b);
}
@Test
public void Test2() {
//查询所有
List<Book> all = bookDao.findAll();
System.out.println(all);
//查询包含书名称为 “红” 的book
//这里满足名称表达式 和jpa类似
List<Book> list = bookDao.findBooksByNameContaining("红");
System.out.println(list);
}
}
三、使用MongoTemplate
1、pom.xml
和上面配置一致
2、yaml配置
和上面配置一致
3、实体
和上面配置一致
4、直接使用(和RedisTmeplate类似)
@RunWith(SpringRunner.class)
@SpringBootTest(classes = RedisApplication.class)
public class mongoTest {
@Autowired
private MongoTemplate mongoTemplatel;
@Test
public void Test3() {
Book book = new Book();
book.setId(4);
book.setName("水浒传");
book.setAuthor("施耐庵");
//插入数据
mongoTemplatel.insert(book);
//查询所有
List<Book> all = mongoTemplatel.findAll(Book.class);
System.out.println(all);
}
}