Criteria条件查询
一. 常用查询:
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条件查询相关推荐
- mongoTemplate的GroupOperation分组查询及Criteria条件查询的使用
mongoTemplate的GroupOperation分组查询及Criteria条件查询的使用 GroupOperation: //此处类似于SQL中的groupBy,group("&qu ...
- NHibernate——Criteria条件查询
条件查询 NHibernate.ICriteria接口表示特定持久类的一个查询.ISession是 ICriteria实例的工厂. 这里以Northwind数据库为示例数据库 示例数据表:Employ ...
- Mybatis中的Criteria条件查询
Criterion Criterion是最基本,最底层的Where条件,用于字段级的筛选. Criteria Criteria包含一个Cretiron的集合,每一个Criteria对象内包含的Cret ...
- hibernate Criteria(条件查询接口)
Criteria(条件查询接口) // 1.简单查询 List<Customer> list = session.createCriteria(Customer.class).list() ...
- NHibernate之旅(4):探索查询之条件查询(Criteria Query)
本节内容 NHibernate中的查询方法 条件查询(Criteria Query) 1.创建ICriteria实例 2.结果集限制 3.结果集排序 4.一些说明 根据示例查询(Query By Ex ...
- Hibernate Criteria对象详解(条件查询)
Hibernate Criteria对象详解 2014-9-1 16:21| 发布者: 传智特刊| 查看: 7290| 评论: 0 摘要: Hibernate框架是目前JavaEE软件开发的企业主流框 ...
- hibernate的查询条件lt_hibernate的多条件查询——Criteria Query的应用
查询数据时,人们往往需要设置查询条件.在SQL或HQL语句中,查询条件常常放在where子句中.此外,Hibernate还支持Criteria查询(Criteria Query),这种查询方式把查询条 ...
- Java使用Criteria实现多条件查询
需求: 前端传入多个查询条件,根据查询条件.查询字段和值使用Java对MongoDB进行多条件筛选. 实现方法: 查询条件传入List<JSONObject>,格式如下: [{" ...
- Hibernate的条件查询的几种方式
2019独角兽企业重金招聘Python工程师标准>>> 1. 第一种,用?占位符,如: //登录(用?占位符)public List<UserPO> LoginUser( ...
最新文章
- 线性表之顺序表(C语言实现)
- BEBLID:增强的高效局部图像特征描述符
- 清华大学朱军:发展安全可靠的AI,为什么依旧任重道远?
- 竞争性前导码数量( numberOfRA-Preambles)
- Hadoop学习笔记—1.基本介绍与环境配置
- win8系统关闭共享服务器,Windows8系统关闭Windows Media Player网络共享服务的方法
- java swing 左上角图标_科学网—Matlab: 学习GUI(修改窗口左上角图标而不warning) - 刘磊的博文...
- setGeometry: Unable to set geometry 493x379+674+326 (frame: 517x443+662+274) on QWidgetWindow/“Dialo
- 没数据时y轴不显示_Matplotlib数据可视化
- 一个初级的前端工程师需要知道些什么?
- 通用窗口类 Inventory Pro 2.1.2 Demo1(中)
- [洛谷P4234]最小差值生成树
- Linux-删除文件空间不释放问题解决
- js切换图片会闪动_javascript 如何实现一个闪烁图片的效果呢?
- 基于串级pid控制系统的两轴无人机云台设计
- Java线程何时放弃CPU时间片
- 计算机图片显示简单原理
- 【转载】《三体》:给时光以生命,给岁月以文明
- ept技术_速懂X86虚拟化关键概念 - Intel EPT
- python抓取京东商品评价总数_python爬虫抓取和分析京东商城评价
热门文章
- jenkins创建新用户_Jenkins凭据管理
- react与mobx搭配时如何缓存mobx的数据(刷新之后保存状态)
- 大数定理与中心极限定理
- python 读取doc 和 docx
- ViewPager嵌套ViewPager后子ViewPager滑动不正常问题
- Sublime插件安装与提高Verilog编写效率插件推荐
- naticat连接mysql报错_「2509」Navicat连接mysql报错2509 - seo实验室
- 云原生CI/CD:tekton/pipeline之认证篇
- 解决Failed to load resource: net::ERR_INCOMPLETE_CHUNKED_ENCODING
- qt做标定软件_有什么很好的软件是用 Qt 编写的?