一、创建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;
}
}