本篇博文主要讲述入使用springboot对MongoDB进行整合
这里我们需要先安装配置MongoDB。在官网下载会比较慢,(反正我是比较慢啦,不知道各位的了)所以我特意提供了一下我下载好的安装包,以及补丁,还有一个可视化工具。地址在下方,有需要的可以前往下载。
如果有不会的安装配置的可参考:MongoDB的安装配置
此处说明一下,因为每个人的电脑环境电脑系统不一致,可能配置可以适当的缩减,就拿我来说,我在公司安装好后需要打补丁才可以使用,但是我在家里自己的电脑上安装就可以直接使用,不需要补丁。请根据实际情况进行安装配置。
准备工作:
- 安装MongoDB
- jdk1.8+
- Maven3.0+
- idea
创建工程:
我们已经创建了许多次工程了,这里就不再赘述了,如果刚接触的新手朋友可以参考:springboot入门体验
引入相关的依赖,以下是我的完整依赖:
<?xml version="1.0" encoding="UTF-8"?>4.0.0com.wujie springboot-mongodb 0.0.1-SNAPSHOTjarspringboot-mongodbDemo project for Spring Bootorg.springframework.boot spring-boot-starter-parent 2.0.3.RELEASEUTF-8UTF-81.8org.springframework.boot spring-boot-starter-data-mongodb org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-test testorg.springframework.boot spring-boot-maven-plugin
需要加入spring-boot-starter-data-mongodb依赖。
接下来就是配置数据源:
spring: data: mongodb: uri: mongodb://localhost:27017/mydbserver: port: 80
如果有安全认证的地址应该这样写:mongodb://name:pass@localhost:27017/mydb
不过我个人建议新接触的朋友们最后先不要进行安全认证。
定义一个实体:
public class Student { /** * id */ @Id private String id; /** * 姓名 */ private String name; /** * 性别 */ private String sex; public Student(String name, String sex) { this.name = name; this.sex = sex; } 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 getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } @Override public String toString() { return "Student{" + "id='" + id + ''' + ", name='" + name + ''' + ", sex='" + sex + ''' + '}'; }}
新建dao层对数据操作:
写一个接口,继承MongoRepository,这个接口有了基本的CRUD的操作,当不能满足需求的时候,可以进行一些自定的方法,比如查询,findByName根据名字查询,findBySex,根据性别查询,在springboot中,我们只需要定义一个方法即可,springboot已经帮我们实现了。注意的是findByName需要严格的按照存入的MongoDB的字段对应。
public interface StudentRepository extends MongoRepository { public Student findByName(String name); public List findBySex(String sex);}
新建service层:
public interface StudentService { public Student add (Student student); public UpdateResult update (Student student); public void delete(String id); public Student findByName(String name); public List findBySex(String sex);}
新建service层的实现类:
@Servicepublic class StudentServiceImpl implements StudentService { @Autowired private StudentRepository studentRepository; @Autowired private MongoTemplate mongoTemplate; @Override public Student add(Student student) { Student student1 = studentRepository.save(student); return student1; } @Override public UpdateResult update(Student student) { Query query = new Query(); Criteria criteria = new Criteria(); query.addCriteria(Criteria.where("_id").is(student.getId())); String collectionsName = "student"; Update update = new Update(); update.set("_id",student.getId()); UpdateResult result = mongoTemplate.updateFirst(query, update, collectionsName); return result; } @Override public void delete(String id) { studentRepository.deleteById(id); } @Override public Student findByName(String name) { return studentRepository.findByName(name); } @Override public List findBySex(String sex) { return studentRepository.findBySex(sex); }}
新建controller:
@RestController@RequestMapping("student")public class StudentController { @Autowired private StudentService studentService; @RequestMapping("add") public Student add(Student student){ return studentService.add(student); } @RequestMapping("update") public UpdateResult update(Student student){ return studentService.update(student); } @RequestMapping("findByName") public Student findByName(String name){ return studentService.findByName(name); } @RequestMapping("findBySex" ) public List findBySex(String sex){ return studentService.findBySex(sex); } @RequestMapping("delete") public String delete(String id){ studentService.delete(id); return "success"; }}
此时,所有需要的类都已经完成,我们只需要启动SpringbootMongodbApplication的mian方法即可,访问http://localhost/student/add?name=test1123&sex=男
即可得到如下的结果:
以上的接口都已经经过测试。