SpringBoot整合MongoDB完成增删改查分页查询
mongodb的依赖导入以及连接配置请自行配置,此文档环境已经搭建完成。
一,SpringBoot整合MongoDB准备工作
1,首先要有mongodb的Document对应的实体类,标注@Document注解
//collection="zt_message_carousel"即为mongodb库中的文档名字
@Document(collection="zt_message_carousel")
public class CarouselInfo {
//创建索引
@Indexed(unique = true)
@Id
private String id;
private String type;
private String title;
private String clickUrl;
private String photoUrl;
private Integer platformId;
private String systemId;
private Integer sort;
private int state;
private String creator;
private Date createTime;
private Date updateTime;
}
二,SpringBoot整合MongoDB完成添加操作
//添加操作比较简单,创建对象,设置参数,调用api即可
CarouselInfo info = new CarouselInfo();
//设置参数
info.setId(UUIDUtil.getUuid());
info.setSystemId(params.getSystemId());
info.setPlatformId(params.getPlatformId());
info.setTitle(params.getTitle());
info.setType(params.getType());
info.setClickUrl(params.getClickUrl());
info.setCreator(params.getCreator());
info.setPhotoUrl(params.getPhotoUrl());
info.setCreateTime(new Date());
//调用方法,完成添加,并返回添加成功的数据
CarouselInfo carouselInfo = mongoTemplate.save(info);
三,SpringBoot整合MongoDB完成删除操作
//创建查询
Query query = new Query();
//设置条件
Criteria criteria = new Criteria();
List<String> list = Arrays.asList(ids.split(","));
criteria.and("systemId").is(systemId);
criteria.and("platformId").is(platformId);
//这里用的是in,也可以是ID,删除一条,灵活使用
criteria.and("id").in(list);
query.addCriteria(criteria);
//调用方法,DeleteResult中可以获取到删除的条数
DeleteResult remove = mongoTemplate.remove(query, CarouselInfo.class);
四,SpringBoot整合MongoDB完成修改操作
//创建查询,主要是用来定位要修改的对象
Query query = new Query();
Criteria criteria = new Criteria();
criteria.and("systemId").is(params.getSystemId()).and("platformId").is(params.getPlatformId()).and("id").is(params.getId());
query.addCriteria(criteria);
//创建Update,修改设置,给查询到的对象,对应的字段设置新值,和sql异曲同工
Update update = new Update().set("title", params.getTitle()).set("type", params.getType()).set("photoUrl", params.getPhotoUrl()).set("updateTime",new Date());
//执行修改操作,返回修改成功的条数
UpdateResult res = mongoTemplate.updateFirst(query, update, CarouselInfo.class);
五,SpringBoot整合MongoDB完成查询操作
//这里是把查询条件写在了方法内,也可提取出来,也可以使用find()方法,返回的就是一个List集合
CarouselInfo info = mongoTemplate.findOne(new Query(Criteria.where("systemId").is(systemId).and("platformId").is(platformId).and("id").is(id)), CarouselInfo.class);
六,SpringBoot整合MongoDB完成分页查询操作
//创建查询,查出此条件下,总记录数
Query query = new Query();
Criteria criteria = new Criteria();
criteria.and("systemId").is(params.getSystemId());
criteria.and("platformId").is(params.getPlatformId());
if (StringUtils.isNotBlank(params.getTitle())) {
criteria.and("title").is(params.getTitle());
}
if (StringUtils.isNotBlank(params.getType())) {
criteria.and("type").is(params.getType());
}
if (params.getState() != null) {
criteria.and("state").is(params.getState());
}
query.addCriteria(criteria);
int count = mongoTemplate.find(query, CarouselInfo.class).size();
// 分页查询
params.setCurPage(params.getCurPage() == null ? PageParameter.DEFAULT_CURR_PAGE : params.getCurPage());
params.setPageSize(params.getPageSize() == null ? PageParameter.DEFAULT_PAGE_SIZE : params.getPageSize());
//此处为第几页,从第几条开始查,公式和sql一样,根据业务自行设置
query.skip((params.getCurPage() - 1) * params.getPageSize());
//每页条数
query.limit(params.getPageSize());
//调用find(),查出符合条件的数据
List<CarouselInfo> carouselInfos = mongoTemplate.find(query, CarouselInfo.class);