SpringBoot学习4.13-springboot集成MongoDB及增删改查

1.添加maven依赖

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-data-mongodb-reactive</artifactId>
</dependency>

2.spring配置

mongodb可以不用用户名和密码访问。

spring:
  data:
    mongodb:
      database: springmongodb
      host: localhost
      port: 27017
      #username: spring
      #password: 123456

3.操作mongodb

使用MongoTemplate操数据库,进行增删改查。

@Document标准pojo为文档实体类,@Id标注文档主键,@Field关联pojo和数据库中的字段。

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 com.mongodb.client.result.DeleteResult;
import com.mongodb.client.result.UpdateResult;
@Service
public class UserService {
	// 操作mongodb的模板
	@Autowired
	private MongoTemplate mongoTemplate;
	// 数据库集合名称
	private String collectionName = "user";
	// 保存或更新
	public User insert(User user) {
		// 保存,主键已有则更新其所有属性
		return mongoTemplate.save(user, collectionName);
	}
	// 根据主键查询
	public User findById(String id) {
		return mongoTemplate.findById(id, User.class, collectionName);
	}
	// 条件查询,or
	public List<User> findUsers(String name, String note) {
		Criteria criteriaName = Criteria.where("name").regex(name);
		Criteria criteriaNote = Criteria.where("note").regex(note);
		Criteria criteria = new Criteria();
		criteria.orOperator(criteriaName, criteriaNote);// 或者
		Query query = Query.query(criteria).limit(100).skip(0);
		return mongoTemplate.find(query, User.class, collectionName);
	}
	// 条件查询,and
	public List<User> findUsers2(String name, int age) {
		Criteria criteria = Criteria.where("name").regex(name).and("age").is(age); // 并且
		Query query = Query.query(criteria).limit(100).skip(0);
		return mongoTemplate.find(query, User.class, collectionName);
	}
	// 根据主键更新,如果所有属性都没有变化则getModifiedCount返回0
	public long updateById(String id, String note, int age) {
		Criteria criteria = Criteria.where("id").is(id);
		Update update = Update.update("note", note);
		update.set("age", age);
		Query query = Query.query(criteria);
		UpdateResult updateResult = mongoTemplate.updateMulti(query, update, User.class, collectionName);
		return updateResult.getModifiedCount();
	}
	// 根据主键删除
	public long deleteById(String id) {
		Criteria criteria = Criteria.where("id").is(id);
		Query query = Query.query(criteria);
		DeleteResult deleteResult = mongoTemplate.remove(query, User.class, collectionName);
		return deleteResult.getDeletedCount();
	}
}

创建文档实体类:User.java

import java.io.Serializable;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.data.mongodb.core.mapping.Field;
// 文档实体类
@Document //该pojo将作为MongoDB文档存在
public class User implements Serializable{//必须实现序列化接口
	private static final long serialVersionUID = 7767440606893451627L;
	@Id //文档主键
	private String id;	
	@Field("name")//关联数据库中的字段,二者不同时标注,相同则不用标注
	private String name;
	private int age;
	private String note;
	//setters and getters
}

上个图感受一下数据库内的数据:

 

还有部分测试代码为贴上,已上传github:https://github.com/zhangyangfei/SpringBootLearn.git中的spring-mongodb工程。

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值