0
点赞
收藏
分享

微信扫一扫

Springboot+Mongodb实现简单分页查询及增删改

这段时间公司有把temp数据存入Mongo的需求,特此记录一下

分页查询

//使用的分页插件为mybaitisPlus的page类
@Override
public Page<SsvIssueLog> getSsvIssLogPage(Page page, SsvIssueLog ssvIssueLog) {
	// 创建查询器
    Query query = new Query(this.handleQueryParam(ssvIssueLog));
    // 处理mongo分页参数
	mongoUtil.start(Integer.parseInt(String.valueOf(page.getCurrent())), Integer.parseInt(String.valueOf(page.getPages())), query);
    // 查询数据
	List<SsvIssueLog> sysLogs = mongoTemplate.find(query, SsvIssueLog.class);
	return mongoUtil.getPage(sysLogs.size(), sysLogs);
}

private Criteria handleQueryParam(SsvIssueLog ssvIssueLog) {
	Criteria criteria = new Criteria();
	if (StrUtil.isNotBlank(ssvIssueLog.getPhone())){
        //此处模糊查询使用正则进行实现
		criteria.and("phone").regex(mongoUtil.getPattern(ssvIssueLog.getPhone()));
	}
	if (null != ssvIssueLog.getWorksId()){
		criteria.and("worksId").is(ssvIssueLog.getWorksId());
	}
	return criteria;
}

新增

//mongoTemplate提供了两种新增方法,save/insert
//save:传入的对象如果带有主键并且库中存在该条数据则执行更新操作,反之新增
//insert:传入的对象如果带有主键并且库中存在该条数据则抛出异常,反之新增
@Override
public void save(SsvIssueLog ssvIssueLog) {
	mongoTemplate.insert(ssvIssueLog)
}

删除

@Override
public void delete(String id) {
	mongoTemplate.remove(new Query(Criteria.where("_id").is(id)), SsvIssueLog.class);
}

修改

@Override
public void updateSsvIssueLogById(SsvIssueLog ssvIssueLog) {
	if (StrUtil.isBlank(ssvIssueLog.getId())){
		throw new BizException("id不存在");
	}
	// 使用save方法进行修改操作
    mongoTemplate.findAndReplace(new Query(Criteria.where("_id").is(ssvIssueLog.getId())), ssvIssueLog);
}

MongoUtil

public class MongoUtil<T> {

	private Integer pageSize;
	private Integer currentPage;


	public void start(Integer currentPage, Integer pageSize, Query query) {
		pageSize = pageSize == 0 ? 10 : pageSize;
		query.limit(pageSize);
		query.skip((currentPage - 1) * pageSize);
		this.pageSize = pageSize;
		this.currentPage = currentPage;
	}

	public Page getPage(long total, List<T> list) {
		Page<T> page = new Page<>();
		page.setRecords(list);
		page.setCurrent(this.currentPage);
		page.setTotal(total);
		page.setPages(this.pageSize);
		return page;
	}

	/**
	 * 用于模糊查询忽略大小写
	 * @param string
	 * @return
	 */
	public Pattern getPattern(String string) {
		return Pattern.compile("^.*" + string + ".*$", Pattern.CASE_INSENSITIVE);
	}
}
举报

相关推荐

0 条评论