您的位置:首页 > 数据库 > Mongodb

SprinBoot操作MongoDB数据库

qq_28683865 2019-07-04 17:51 477 查看

一、创建SpringBoot工程

这个不用多提… 4000 …记得勾选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;
}
}
标签: