SprinBoot操作MongoDB数据库

3 篇文章 0 订阅
2 篇文章 0 订阅

一、创建SpringBoot工程

这个不用多提……记得勾选springboot.data就可以

二、导入jar包

pom.xml文件:

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

三、配置MongoDB数据库信息

在application.yml中配置
在这里插入图片描述

四、建表

五、CRUD操作

声明 MongoTemplate进行管理的变量mongoTemplate:

@Autowired
    private MongoTemplate mongoTemplate;

SON中optString和getString的区别:

optString方法会在对应的key中的值不存在的时候返回一个空字符串或者返回你指定的默认值
但是getString方法会报空指针异常的错误

1.插入数据

举例:插入一条数据,返回结果result(插入的一条数据,即文档)转成Json对象,获取result中的数据库生成id号,如果id不为空就表示插入成功。

MongoDB插入语句:
mongoTemplate.insert(T objectToSave,"collectionName")

objectToSave:插入的数据
collectionName:集合名字(表名)

代码:

 @Override
    public boolean save(Student stu){
        JSONObject result = JSONObject.fromObject(mongoTemplate.insert(stu,"student"));
        String id = result.optString("id");
        if(id!=null&&!"".equals(id)) {
            return true;
        }
        else {
            return false;
        }
    }
2.查询数据

查询某个用户的日志信息,按时间降序排列,并指定要查询的条数(可用于分页);
先创建一个查询对象Query query,
并向其中添加对用户名的查询约束:query.addCriteria(Criteria.where(“username”).is(username))
指定查询结果的按“某个字段”排序方式:升序or降序:
query.with(new Sort(Sort.Direction.DESC,“某个字段”))
指定要查询的条数(int类型):
query.limit(int “条数”);

MongoDB查询语句:
mongoTemplate.find(Query xx,xxx.class,"collectionName")

代码:

  @Override
    public List<LogInfo> listStuInfoByUser(String username,int pageSize){
        Query query = new Query();
        query.addCriteria(Criteria.where("username").is(username));
        query.with(new Sort(Sort.Direction.DESC,"createTime"));
        query.limit(pageSize);
        List<Student> stuList = mongoTemplate.find(query,Student.class,"student");
        return stuList ;
    }

3.分页查询

查询某个时间范围内,指定页码(pageNum)的数据。
query.skip(int n):跳过n条数据

@Override
    public List<student> listStudentsInfoByTime(int pageNum,int pageSize,String fromTime,String toTime){
        Query query = new Query();
        //添加查询条件
        query.addCriteria(Criteria.where("createTime").gte(fromTime).lte(toTime));
        //排序
        query.with(new Sort(Sort.Direction.DESC,"createTime"));
        query.skip((pageNum-1)*pageSize).limit(pageSize);
        List<Student> res= mongoTemplate.find(query, Student.class,"student");
        return res;
    }

4.删除数据

MongoDB删除语句:

mongoTemplate.remove(query,"student")

代码:

 @Override
    public boolean deleteStu(String id) {
        Query query = new Query();
        query.addCriteria(Criteria.where("_id").is(id));
        JSONObject result = JSONObject.fromObject(mongoTemplate.remove(query,"student"));
        String count = result.optString("deletedCount");
        if(count!=null&&"1".equals(count)){
            return true;
        }else {
            return false;
        }
    }

5.更新数据

约束中添加主键id,确定修改那条数据(文档);
创建更新对象update,在update中设置要修改的数据信息:
update.set(“key”,“value”);

MongoDB查询语句:

mongoTemplate.updateFirst(query,update,"collectionName")

代码:

@Override
public boolean updateProtocolDesign(Student stu) {
		Query query = new Query();
        query.addCriteria(Criteria.where("_id").is(stu.getId()));
        Update update = new Update();
        update.set("stuName",stu.getName());
               
        JSONObject result = JSONObject.fromObject(mongoTemplate.updateFirst(query,update,"student"));
		
		//返回修改的数量
        String count = result.optString("modifiedCount");
        
        if(count!=null&&"1".equals(count)){
            return true;
        }else {
            return false;
        }
 }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值