- 1.目标
- 2.环境准备
- 3. 安装Mongo DB
- 3.1 下载Mongo DB镜像
- 3.2 运行容器
- 3.3 配置
- 3.4 使用
- 3.5 配置远程 *** 作
- 4.Spring data *** 作Mongo DB实例
- 4.1 Pom.xml
- 4.2 entity实体类
- 4.3 repository
- 4.4 service
- 4.5 web
- 4.6 启动入口
- 4.7 application.properties
- 4.9 测试
- 5.挖坑
- 1 使用docker安装Mongo DB;
- 2 远程连接数据库,即可以通过Robo 3T或者DG等工具连接;
- 3 通过Spring boot程序读写数据库中内容。
- 1 docker
- 2 Mongo镜像
- 3 IDEA
- 4 JAVA 11
docker pull mongo:latest
可以使用docker images查看下载好的镜像
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE mongo latest 40d4435de119 4 weeks ago 701MB3.2 运行容器
docker run -itd --name mongo -p 27017:27017 mongo --auth
其中
- p 27017:27017 :映射容器服务的 27017 端口到宿主机的 27017 端口。
- auth:需要密码才能访问容器服务。
此时可以查看容器运行情况:
~ docker ps -a ConTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 165d0cb0abd0 mongo:latest "docker-entrypoint.s…" 2 days ago Up 3 seconds 0.0.0.0:27017->27017/tcp mongo3.3 配置
进入mongo这个容器之中
$ docker exec -it mongo mongo admin
创建一个名为 admin,密码为 123456 的用户。
db.createUser({ user:'admin',pwd:'123456',roles:[ { role:'userAdminAnyDatabase', db: 'admin'},"readWriteAnyDatabase"]});
尝试使用上面创建的用户信息进行连接。
db.auth('admin', '123456')3.4 使用
尝试通过命令后进入mongo
➜ ~ docker exec -it mongo /bin/bash root@165d0cb0abd0:/# mongo admin MongoDB shell version v5.0.4 connecting to: mongodb://127.0.0.1:27017/admin?compressors=disabled&gssapiServiceName=mongodb Implicit session: session { "id" : UUID("ea6eb8f4-e2a0-4ce8-b5dd-ca43302cc614") } MongoDB server version: 5.0.4 ================ Warning: the "mongo" shell has been superseded by "mongosh", which delivers improved usability and compatibility.The "mongo" shell has been deprecated and will be removed in an upcoming release. For installation instructions, see https://docs.mongodb.com/mongodb-shell/install/ ================ > show dbs >
可以看到,我们在没有输入密码的情况下,我们无法通过命令看到所拥有的库。
> show dbs > db.auth("admin","123456") 1 > show dbs admin 0.000GB config 0.000GB local 0.000GB yytest 0.000GB
通过了权限校验之后,就可以对数据库进行 *** 作了。
3.5 配置远程 *** 作这个时候,如果使用Robo 3T工具连接数据库,出现了连接不上的情况,是配置文件没有将bindIp: 127.0.0.1改掉,这样是只能本机登录的。
#进入容器 docker exec -it mongodb /bin/bash #更新源 apt-get update # 安装 apt-get install vim # 修改 mongo 配置文件 vim /etc/mongod.conf.orig
将其中的bindIp: 127.0.0.1注释掉# bindIp: 127.0.0.1
或者改成bindIp: 0.0.0.0
这个时候保存重启就可以远程连接了。
借助IDE A创建一个Spring boot项目,这里我选择了Kotlin,看看这个糖到底有多甜。
4.1 Pom.xml主要是添加了spring-boot-starter-data-mongodb依赖
4.2 entity实体类4.0.0 org.springframework.boot spring-boot-starter-parent2.5.6 com.example wu0.0.1-SNAPSHOT wu wu 11 1.5.31 org.springframework.boot spring-boot-starter-data-mongodborg.springframework.boot spring-boot-starter-webcom.fasterxml.jackson.module jackson-module-kotlinorg.jetbrains.kotlin kotlin-reflectorg.jetbrains.kotlin kotlin-stdlib-jdk8org.projectlombok lomboktrue org.springframework.boot spring-boot-starter-testtest ${project.basedir}/src/main/kotlin ${project.basedir}/src/test/kotlin org.springframework.boot spring-boot-maven-pluginorg.projectlombok lombokorg.jetbrains.kotlin kotlin-maven-plugin-Xjsr305=strict spring org.jetbrains.kotlin kotlin-maven-allopen${kotlin.version}
package com.example.wu.entity import lombok.Data import org.springframework.data.annotation.Id import org.springframework.data.mongodb.core.mapping.document @Data @document("books") data class Book( @Id val id: String, val name:String, val edition: Int )
@document(“books”)注解表明,这个实体对应的mongo db中名为books的collection。
4.3 repositorypackage com.example.wu.dao import com.example.wu.entity.Book import org.springframework.data.mongodb.repository.MongoRepository interface BookRepository: MongoRepository{ fun findByName(name: String): Book }
这里只需要继承接口,就可以使用框架提供的各种方法了。注意方法名命名规范即可。
4.4 servicepackage com.example.wu.service import com.example.wu.entity.Book interface BookService { fun findByName(bookName: String) : Book }
package com.example.wu.service.impl import com.example.wu.dao.BookRepository import com.example.wu.entity.Book import com.example.wu.service.BookService import org.springframework.stereotype.Service @Service class BookServiceImpl( private val bookRepository: BookRepository ) : BookService { override fun findByName(name: String): Book { return bookRepository.findByName(name) } }4.5 web
package com.example.wu.web import com.example.wu.entity.Book import com.example.wu.service.BookService import org.springframework.http.ResponseEntity import org.springframework.web.bind.annotation.GetMapping import org.springframework.web.bind.annotation.RestController import javax.websocket.server.PathParam @RestController class BookController( private val bookService: BookService) { @GetMapping("/book") fun getBookByName(name: String): ResponseEntity4.6 启动入口{ var book = bookService.findByName(name) return ResponseEntity.ok(book) } }
package com.example.wu import org.springframework.boot.autoconfigure.SpringBootApplication import org.springframework.boot.runApplication @SpringBootApplication class WuApplication fun main(args: Array4.7 application.properties) { runApplication (*args) }
server.port=10098 spring.data.mongodb.host=localhost spring.data.mongodb.port=27017 spring.data.mongodb.database=yytest spring.data.mongodb.username=admin spring.data.mongodb.password=1234564.9 测试
这个时候就可以启动,并且进行测试存取数据了。
原理还没有解析,先挖坑。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)