spring boot 整合mongodb
来源:互联网 发布:千图网淘宝工具 编辑:程序博客网 时间:2024/05/16 11:11
spring boot 整合spring data mongodb的例子:
项目依赖
pom.xml
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.2.RELEASE</version> </parent> <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>
mongodb 配置
application.yaml
spring data: mongodb: host: localhost database: test port: 27017
实体类
实体类对应于某一个指定的集合 class Student
//指定对应的集合@Document(collection = "student")public class Student { @Id private long id; private String name; private List hobby; private Map grade; //get and set 省略了}
repository
继承MongoRepository
, 就可以获得简单的增删改查的功能了,系统自动帮你实现。同时,还可以按照一定的规则,生成一些自定义的查找方法具体参照 Spring data Mongodb-Query methods
package com.junhua.dao;import com.junhua.dao.StudentRepositoryCustom;import com.junhua.pojo.Student;import org.springframework.data.mongodb.repository.MongoRepository;/** * Created by xiejunhua on 2017/5/18. */public interface StudentRepository extends MongoRepository<Student, Long> { Student findFirstByName(String name); //支持json查询 ?0表示第一个参数 @Query("{'name': ?0}") List<Student> findUsersByName(String name);}
自定义操作
要定义些自定义的查询和其他修改操作,需要新建一个接口StudentRepositoryCustom
和接口对应的实现类StudentRepositoryImpl
这里要特别注意实现类的名称,一定要是在StudentRepository
后面加Impl
而不能是其他的 interface StudentRepositoryCustom
package com.junhua.dao;import java.util.List;/** * Created by xiejunhua on 2017/5/18. * Customizing yourself's method to operate collection */public interface StudentRepositoryCustom { int updateHobby(String name, List hobbies);}
class StudentRepositoryImpl
package com.junhua.dao.impl;import com.junhua.dao.StudentRepositoryCustom;import com.junhua.pojo.Student;import com.mongodb.WriteResult;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 java.util.List;/** * Created by xiejunhua on 2017/5/18. * notice the class name must be StudentRepositoryImpl mustn't be StudentRepositoryCustomImpl */public class StudentRepositoryImpl implements StudentRepositoryCustom { @Autowired private MongoTemplate mongoTemplate; @Override public int updateHobby(String name, List hobbies) { Query query = new Query(Criteria.where("name").is(name)); Update update = new Update().set("hobby", hobbies); WriteResult result = mongoTemplate.updateFirst(query, update, Student.class); if (result != null) { return result.getN(); } else { return 0; } }}
在class StudentRepository
加上新的继承
package com.junhua.dao;import com.junhua.pojo.Student;import org.springframework.data.mongodb.repository.MongoRepository;/** * Created by xiejunhua on 2017/5/18. */public interface StudentRepository extends MongoRepository<Student, Long>, StudentRepositoryCustom { Student findFirstByName(String name); @Query("{'name': ?0}") List<Student> findUsersByName(String name);}
执行代码
class App
package com.junhua;import com.junhua.dao.StudentRepository;import com.junhua.pojo.Student;import org.springframework.boot.CommandLineRunner;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.context.annotation.Bean;import org.springframework.data.mongodb.core.MongoTemplate;import java.util.ArrayList;import java.util.HashMap;import java.util.Map;/** * Created by xiejunhua on 2017/5/17. */@SpringBootApplicationpublic class App { public static void main(String[] args) { SpringApplication app = new SpringApplication(App.class); app.run(args); } @Bean CommandLineRunner init(StudentRepository studentRepository) { return new CommandLineRunner() { @Override public void run(String... strings) throws Exception { Student student = new Student(); ArrayList arrayList = new ArrayList(); arrayList.add("watch tv"); arrayList.add("read book"); Map map = new HashMap<String, Integer>(); map.put("math", 80); map.put("English", 70); student.setId(1L); student.setName("xiaoming"); student.setHobby(arrayList); student.setGrade(map); studentRepository.insert(student); Student student1 = studentRepository.findFirstByName("xiaoming"); System.out.println(student1); } }; }; }}
直接操作,不依赖对象映射和MongoRepository
通过MongoTemplate 来直接执行查询和修改
package com.junhua;import com.junhua.dao.StudentRepository;import com.junhua.pojo.Student;import org.springframework.boot.CommandLineRunner;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.context.annotation.Bean;import org.springframework.data.mongodb.core.MongoTemplate;import java.util.ArrayList;import java.util.HashMap;import java.util.Map;/** * Created by xiejunhua on 2017/5/17. */@SpringBootApplicationpublic class App { public static void main(String[] args) { SpringApplication app = new SpringApplication(App.class); app.run(args); } @Bean CommandLineRunner init(MongoTemplate mongoTemplate) { return new CommandLineRunner() { @Override public void run(String... strings) throws Exception { DBCollection dbCollection = mongoTemplate.getCollection("student"); //拿到这个对象之后,用过Mongodb官方驱动的朋友应该很熟悉 怎么操作了 BasicDBObject basicDBObject = new BasicDBObject(); basicDBObject.append("name", "xiaoming"); DBCursor dbCursor = dbCollection.find(basicDBObject); while (dbCursor.hasNext()) { System.out.println(dbCursor.next()); } } }; }; }}
项目完整代码 github
阅读全文
0 0
- spring boot 整合mongodb
- spring boot 整合mongodb
- MongoDB整合Spring Boot 的logback
- MongoDB整合Spring Boot 的logback
- Spring Boot整合Morphia访问MongoDB
- Spring 架构篇——Spring Boot 整合 MongoDB
- spring boot整合Morphia对MongoDB进行操作
- spring boot整合log4j2输出日志到mongodb
- Spring Boot Mongodb
- spring boot 连接mongodb
- 4、Spring Boot Mongodb
- spring-boot集成MongoDB
- spring-boot mongodb配置
- spring boot集成mongodb
- spring boot Mongodb
- spring-boot使用mongoDB
- spring boot 集成 mongodb
- Spring Boot集成MongoDB
- 【Unity&UGUI】输入框代码控制InputField,并显示输入文本
- aa
- 分类导航数据杂谈
- [leetcode: Python]17. Letter Combinations of a Phone Number
- 【Java基础】基本数据类型
- spring boot 整合mongodb
- JS打字机效果
- convert bst to greater tree
- Linux 内存与I/O访问
- .NET中变量生存期
- python一种用classmethod实现单例模式方法的探讨
- python安装setuptools报错Traceback (most recent call last): File "setup.py", line 11, in <module> i
- Echarts学习记录——设置图表与容器的间隔
- Java -- Enumeration 接口