首先需要导入依赖
<dependency> <groupId>org.mongodb</groupId> <artifactId>bson</artifactId> <version>3.11.2</version> </dependency> <dependency> <groupId>org.mongodb</groupId> <artifactId>mongodb-driver</artifactId> <version>3.11.2</version> </dependency> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-mongodb</artifactId> <version>2.2.6.RELEASE</version> </dependency> <dependency> <groupId>org.mongodb</groupId> <artifactId>mongodb-driver-core</artifactId> <version>3.11.2</version> </dependency>
第二步在配置类里,配好mongonDB的连接路径
spring: data: mongodb: uri: mongodb://student:123456@127.0.0.1:27017/student # URI形如:mongodb://[username:password@]host1[:port1][,...hostN[:portN]]][/[database][?options]]
第四步写工具类MongoDbUtil(举个栗子)
package com.xiao.lanmao.utils; import lombok.Data; 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.stereotype.Component; import org.springframework.util.ObjectUtils; import java.util.List; @Component @Data public class MongoDbUtil<T> { @Autowired private MongoTemplate mongoTemplate; private static String TENANT_ID = "hh"; /*** * 保存一个集合(对象)(如果数据库中的id和要保存的id一样,那么会被覆盖) */ public T save(T t, String collectionName) { collectionName = TENANT_ID + "-" + collectionName; createCollection(collectionName); return this.mongoTemplate.save(t, collectionName); } /*** * 根据id从几何中查询对象 */ public T queryById(Integer id, Class<T> clazz, String collectionName) { collectionName = TENANT_ID + "-" + collectionName; createCollection(collectionName); Query query = new Query(Criteria.where("_id").is(id)); return this.mongoTemplate.findOne(query, clazz, collectionName); } /** * 根据id删除 */ public int deleteById(Long id, Class<T> clazz, String collectionName) { collectionName = TENANT_ID + "-" + collectionName; createCollection(collectionName); Criteria criteria = Criteria.where("_id").is(id); if (null != criteria) { Query query = new Query(criteria); T obj = this.mongoTemplate.findOne(query, clazz, collectionName); if (obj != null) { return (int) this.mongoTemplate.remove(obj, collectionName).getDeletedCount(); } } return 0; } /** * 功能描述: 往对应的集合中插入一条数据 */ public void insert(T info, String collectionName) { collectionName = TENANT_ID + "-" + collectionName; createCollection(collectionName); mongoTemplate.insert(info, collectionName); } /** * 功能描述: 往对应的集合中批量插入数据,注意批量的数据中不要包含重复的id */ public void insertMulti(List<T> infos, String collectionName) { collectionName = TENANT_ID + "-" + collectionName; createCollection(collectionName); mongoTemplate.insert(infos, collectionName); } /** * 功能描述: 根据id删除集合中的内容 */ public void deleteById(String id, Class<T> clazz, String collectionName) { collectionName = TENANT_ID + "-" + collectionName; createCollection(collectionName); // 设置查询条件,当id=#{id} Query query = new Query(Criteria.where("id").is(id)); mongoTemplate.remove(query, clazz, collectionName); } /** * 功能描述: 查询列表信息 */ public List<T> selectList(String collectName, Class<T> clazz) { collectName = TENANT_ID + "-" + collectName; createCollection(collectName); return selectList(collectName, clazz, null, null); } /** * 功能描述: 创建一个集合 * 同一个集合中可以存入多个不同类型的对象,我们为了方便维护和提升性能, * 后续将限制一个集合中存入的对象类型,即一个集合只能存放一个类型的数据 * @param name 集合名称,相当于传统数据库的表名 */ public void createCollection(String name) { if (!mongoTemplate.collectionExists(name)) { mongoTemplate.createCollection(name); } } /** * 功能描述: 分页查询列表信息 */ public List<T> selectList(String collectName, Class<T> clazz, Integer currentPage, Integer pageSize) { collectName = TENANT_ID + "-" + collectName; createCollection(collectName); //设置分页参数 Query query = new Query(); //设置分页信息 if (!ObjectUtils.isEmpty(currentPage) && ObjectUtils.isEmpty(pageSize)) { query.limit(pageSize); query.skip(pageSize * (currentPage - 1)); } return mongoTemplate.find(query, clazz, collectName); } }
第五步、使用的时候需要写一个实体类(有时候不需要,看情况)
package com.xiao.lanmao.MongoDbDate; import lombok.Data; import org.springframework.data.annotation.Id; @Data public class PowerDate { /** * 学号 * */ @Id private Integer studentNumber; /** * 用户名 * */ private String user; /** * 年龄 * */ private Integer age; }
最后在service中的使用示例
@Autowired MongoDbUtil mongoDbUtil; public viod postTestData() { PowerDate powerDate = new PowerDate(); powerDate.setStudentNumber(135); powerDate.setUser("名字"); powerDate.setAge(20); mongoDbUtil.save(powerDate, "MongoDBTableName"); }