一. 常用查询:

1. 查询一条数据:(多用于保存时判断db中是否已有当前数据,这里 is  精确匹配,模糊匹配 使用 regex...)

public PageUrl getByUrl(String url) {return findOne(new Query(Criteria.where("url").is(url)),PageUrl.class);}

2. 查询多条数据:linkUrl.id 属于分级查询

public List<PageUrl> getPageUrlsByUrl(int begin, int end,String linkUrlid) {        Query query = new Query();query.addCriteria(Criteria.where("linkUrl.id").is(linkUrlid));return find(query.limit(end - begin).skip(begin), PageUrl.class);        }

3. 模糊查询:

public long getProcessLandLogsCount(List<Condition> conditions){Query query = new Query();if (conditions != null && conditions.size() > 0) {for (Condition condition : conditions) {query.addCriteria(Criteria.where(condition.getKey()).regex(".*?\\" +condition.getValue().toString()+ ".*"));            }}return count(query, ProcessLandLog.class);}

4. gte: 大于等于,lte小于等于...注意查询的时候各个字段的类型要和MongoDB中数据类型一致

public List<ProcessLandLog> getProcessLandLogs(int begin,int end,List<Condition> conditions,String orderField,Direction direction){Query query = new Query();if (conditions != null && conditions.size() > 0) {for (Condition condition : conditions) {if(condition.getKey().equals("time")){query.addCriteria(Criteria.where("time").gte(condition.getValue())); //gte: 大于等于}else if(condition.getKey().equals("insertTime")){query.addCriteria(Criteria.where("insertTime").gte(condition.getValue()));}else{
                    query.addCriteria(Criteria.where(condition.getKey()).is(condition.getValue()));
                }}}return find(query.limit(end - begin).skip(begin).with(new Sort(new Sort.Order(direction, orderField))), ProcessLandLog.class);}

public List<DpsLand> getDpsLandsByTime(int begin, int end, Date beginDate,Date endDate) {  return find(new Query(Criteria.where("updateTime").gte(beginDate).lte(endDate)).limit(end - begin).skip(begin),    DpsLand.class); }

查询字段不存在的数据

public List<GoodsDetail> getGoodsDetails2(int begin, int end) {Query query = new Query();query.addCriteria(Criteria.where("goodsSummary").not());return find(query.limit(end - begin).skip(begin),GoodsDetail.class);}

5. 查询数量:

public long getPageInfosCount(List<Condition> conditions) {Query query = new Query();if (conditions != null && conditions.size() > 0) {for (Condition condition : conditions) {                query.addCriteria(Criteria.where(condition.getKey()).is(condition.getValue()));}}return count(query, PageInfo.class);}

6. 更新一条数据的一个字段:

public WriteResult updateTime(PageUrl pageUrl) {String id = pageUrl.getId();return updateFirst(new Query(Criteria.where("id").is(id)),Update.update("updateTime", pageUrl.getUpdateTime()), PageUrl.class); }

7. 更新一条数据的多个字段:

//调用更新
private void updateProcessLandLog(ProcessLandLog processLandLog,int crawlResult) { List<String> fields = new ArrayList<String>(); List<Object> values = new ArrayList<Object>(); fields.add("state"); fields.add("result"); fields.add("time"); values.add("1"); values.add(crawlResult); values.add(Calendar.getInstance().getTime()); processLandLogReposity.updateProcessLandLog(processLandLog, fields, values); } //更新 public void updateProcessLandLog(ProcessLandLog land, List<String> fields,List<Object> values) { Update update = new Update(); int size = fields.size(); for(int i = 0 ; i < size; i++){ String field = fields.get(i); Object value = values.get(i); update.set(field, value); } updateFirst(new Query(Criteria.where("id").is(land.getId())), update,ProcessLandLog.class); }

8. 删除数据:

public void deleteObject(Class<T> clazz,String id) {remove(new Query(Criteria.where("id").is(id)),clazz);}

9.保存数据:

//插入一条数据public void saveObject(Object obj) {insert(obj);}
//插入多条数据
public void saveObjects(List<T> objects) {for(T t:objects){insert(t);}}

Criteria条件查询相关推荐

  1. mongoTemplate的GroupOperation分组查询及Criteria条件查询的使用

    mongoTemplate的GroupOperation分组查询及Criteria条件查询的使用 GroupOperation: //此处类似于SQL中的groupBy,group("&qu ...

  2. NHibernate——Criteria条件查询

    条件查询 NHibernate.ICriteria接口表示特定持久类的一个查询.ISession是 ICriteria实例的工厂. 这里以Northwind数据库为示例数据库 示例数据表:Employ ...

  3. Mybatis中的Criteria条件查询

    Criterion Criterion是最基本,最底层的Where条件,用于字段级的筛选. Criteria Criteria包含一个Cretiron的集合,每一个Criteria对象内包含的Cret ...

  4. hibernate Criteria(条件查询接口)

    Criteria(条件查询接口) // 1.简单查询 List<Customer> list = session.createCriteria(Customer.class).list() ...

  5. NHibernate之旅(4):探索查询之条件查询(Criteria Query)

    本节内容 NHibernate中的查询方法 条件查询(Criteria Query) 1.创建ICriteria实例 2.结果集限制 3.结果集排序 4.一些说明 根据示例查询(Query By Ex ...

  6. Hibernate Criteria对象详解(条件查询)

    Hibernate Criteria对象详解 2014-9-1 16:21| 发布者: 传智特刊| 查看: 7290| 评论: 0 摘要: Hibernate框架是目前JavaEE软件开发的企业主流框 ...

  7. hibernate的查询条件lt_hibernate的多条件查询——Criteria Query的应用

    查询数据时,人们往往需要设置查询条件.在SQL或HQL语句中,查询条件常常放在where子句中.此外,Hibernate还支持Criteria查询(Criteria Query),这种查询方式把查询条 ...

  8. Java使用Criteria实现多条件查询

    需求: 前端传入多个查询条件,根据查询条件.查询字段和值使用Java对MongoDB进行多条件筛选. 实现方法: 查询条件传入List<JSONObject>,格式如下: [{" ...

  9. Hibernate的条件查询的几种方式

    2019独角兽企业重金招聘Python工程师标准>>> 1. 第一种,用?占位符,如: //登录(用?占位符)public List<UserPO> LoginUser( ...

最新文章

  1. 线性表之顺序表(C语言实现)
  2. BEBLID:增强的高效局部图像特征描述符
  3. 清华大学朱军:发展安全可靠的AI,为什么依旧任重道远?
  4. 竞争性前导码数量( numberOfRA-Preambles)
  5. Hadoop学习笔记—1.基本介绍与环境配置
  6. win8系统关闭共享服务器,Windows8系统关闭Windows Media Player网络共享服务的方法
  7. java swing 左上角图标_科学网—Matlab: 学习GUI(修改窗口左上角图标而不warning) - 刘磊的博文...
  8. setGeometry: Unable to set geometry 493x379+674+326 (frame: 517x443+662+274) on QWidgetWindow/“Dialo
  9. 没数据时y轴不显示_Matplotlib数据可视化
  10. 一个初级的前端工程师需要知道些什么?
  11. 通用窗口类 Inventory Pro 2.1.2 Demo1(中)
  12. [洛谷P4234]最小差值生成树
  13. Linux-删除文件空间不释放问题解决
  14. js切换图片会闪动_javascript 如何实现一个闪烁图片的效果呢?
  15. 基于串级pid控制系统的两轴无人机云台设计
  16. Java线程何时放弃CPU时间片
  17. 计算机图片显示简单原理
  18. 【转载】《三体》:给时光以生命,给岁月以文明
  19. ept技术_速懂X86虚拟化关键概念 - Intel EPT
  20. python抓取京东商品评价总数_python爬虫抓取和分析京东商城评价

热门文章

  1. jenkins创建新用户_Jenkins凭据管理
  2. react与mobx搭配时如何缓存mobx的数据(刷新之后保存状态)
  3. 大数定理与中心极限定理
  4. python 读取doc 和 docx
  5. ViewPager嵌套ViewPager后子ViewPager滑动不正常问题
  6. Sublime插件安装与提高Verilog编写效率插件推荐
  7. naticat连接mysql报错_「2509」Navicat连接mysql报错2509 - seo实验室
  8. 云原生CI/CD:tekton/pipeline之认证篇
  9. 解决Failed to load resource: net::ERR_INCOMPLETE_CHUNKED_ENCODING
  10. qt做标定软件_有什么很好的软件是用 Qt 编写的?