去MongoDB官网下载一个合适的安装包,下载地址:
https://www.mongodb.com/download-center?jmp=nav#community
完成下载后进行安装,具体安装教程不展开,可参考如下博文:
https://blog.csdn.net/qq_42908549/article/details/81490733
为了能够更加方便,我们需要一个可视化的管理工具,我选择的是Studio 3T
下载地址:https://studio3t.com/download/
下载下来完成安装后,如下图:
然后自己摸索摸索如何使用>_<
4.0.0
org.springframework.boot
spring-boot-starter-parent
2.1.6.RELEASE
com.springboot-mongo
demo
0.0.1-SNAPSHOT
demo
Demo project for Spring Boot
1.8
org.springframework.boot
spring-boot-starter-data-mongodb
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-test
test
org.springframework.boot
spring-boot-maven-plugin
3.3、application.properties文件:
server.port=8080
##mongo配置
spring.data.mongodb.host=10.10.38.54
spring.data.mongodb.port=27017
spring.data.mongodb.authentication-database=admin
spring.data.mongodb.database=tao_dev //数据库名
spring.data.mongodb.username=root
spring.data.mongodb.password=123456
##spring.data.mongodb.uri=mongodb://root:[email protected]:27017/tao_dev
3.4、刚刚创建的项目结构如第一张图所示,现在在pojo包下新建一个实体类(person):
package com.springbootmongo.demo.pojo;
import org.springframework.data.mongodb.core.mapping.Document;
/**
* @Name: person实体类
* @Description:
* @Author:[email protected]
* @Date:2019/7/16 15:24
*/
@Document(collection = "person")
public class Person {
private String id;
private String name;
private String age;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public Person(String id,String name, String age){
this.id=id;
this.name = name;
this.age = age;
}
@Override
public String toString(){
return "Person{"+
"id='"+id+'\''+
", name='" + name +'\''+
", age='"+age +'\''+'}';
}
}
3.5、自定义的数据库的操作,继承MongoRepository
package com.springbootmongo.demo.dao;
import com.springbootmongo.demo.pojo.Person;
import org.springframework.data.mongodb.repository.MongoRepository;
import java.util.List;
/**
* @Name:
* @Description: 基本dao层操作
* @Author:[email protected]
* @Date:2019/7/16 15:38
*/
public interface PersonRepository extends MongoRepository {
public Person findByName(String name);
public List findByAge(String age);
}
3.6、service层
3.6.1、PersonService接口:
package com.springbootmongo.demo.service;
import com.mongodb.bulk.UpdateRequest;
import com.mongodb.client.result.UpdateResult;
import com.springbootmongo.demo.pojo.Person;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @Name:
* @Description:
* @Author:[email protected]
* @Date:2019/7/16 15:42
*/
@Service
public interface PersonService {
public Person add(Person person);
public UpdateResult update(Person person);
public void delete(String id);
public Person findByName(String name);
public List findByAge(String age);
}
3.6.2、service的实现类:
package com.springbootmongo.demo.service.Impl;
import com.mongodb.client.result.UpdateResult;
import com.springbootmongo.demo.dao.PersonRepository;
import com.springbootmongo.demo.pojo.Person;
import com.springbootmongo.demo.service.PersonService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @Name:
* @Description:
* @Author:[email protected]
* @Date:2019/7/16 15:48
*/
@Service
public class PersonServiceImpl implements PersonService {
@Autowired
private PersonRepository personRepository;
@Autowired
private MongoTemplate mongoTemplate;
@Override
public Person add(Person person) {
Person person1 = personRepository.save(person);
return person1;
}
@Override
public UpdateResult update(Person person) {
Query query = new Query();
//Criteria criteria = new Criteria();
query.addCriteria(Criteria.where("_id").is(person.getId()));
String collectionsName = "person";
Update update = new Update();
update.set("_id",person.getId());
update.set("name",person.getName());
update.set("age",person.getAge());
UpdateResult result = mongoTemplate.updateFirst(query,update,collectionsName);
return result;
}
@Override
public void delete(String id) {
personRepository.deleteById(id);
}
@Override
public Person findByName(String name) {
return personRepository.findByName(name);
}
@Override
public List findByAge(String age) {
return personRepository.findByAge(age);
}
}
3.7、controller层各操作的接口:
package com.springbootmongo.demo.controller;
import com.mongodb.client.result.UpdateResult;
import com.springbootmongo.demo.pojo.Person;
import com.springbootmongo.demo.service.PersonService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* @Name:
* @Description:
* @Author:[email protected]
* @Date:2019/7/16 16:05
*/
@RestController
@RequestMapping("person")
public class PersonController {
@Autowired
private PersonService personService;
@RequestMapping("add")
public Person add(Person person){
return personService.add(person);
}
@RequestMapping("update")
public UpdateResult update(Person person){
return personService.update(person);
}
@RequestMapping("findByName")
public Person findByName(String name){
return personService.findByName(name);
}
@RequestMapping("findByAge")
public List findByAge(String age){
return personService.findByAge(age);
}
@RequestMapping("delete")
public String delete(String id){
personService.delete(id);
return "success";
}
}
3.8、实现效果如下图:
此时使用Studio 3T查看库中信息:
至此一个小demo算是完成了。
以上只是mongoDB的最基本的使用,关于mongoDB的高级操作写法还要更进一步的学习,MongoDB不像Mysql那些关系数据库,使用时还是有很大的不同。