这段时间公司有把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);
}
}