查询你的数据
在JDO API中和查询相关密切的有两个接口(它们的具体实现由JDO产品来完成):
java.jdo.Query
========================
该接口的实例是由另一个接口PersistenceManager来创建的,在JDO中PersistenceManager是一个比较重要的接口,我们所有的事务处理都是通过该接口来定义的。
PersistenceManager接口有一组newQuery方法来产生Query的实例:
public Query newQuery()
public Query newQuery(java.lang.Class cls)
public Query newQuery(java.lang.Class cls, java.util.Collection cln)
public Query newQuery(java.lang.Class cls,
java.util.Collection cln,
java.lang.String filter)
public Query newQuery(java.lang.Class cls, java.lang.String filter)
public Query newQuery(Extent cln)
public Query newQuery(Extent cln, java.lang.String filter)
public Query newQuery(java.lang.Object compiled)
public Query newQuery(java.lang.String language, java.lang.Object query)
有查询就要有返回结果,Query接口里一组execute方法来返回查询的结果:
public Object execute()
public Object execute(java.lang.Object p1)
public Object execute(java.lang.Object p1, java.lang.Object p2)
public Object execute(java.lang.Object p1,
java.lang.Object p2,
java.lang.Object p3)
通常我不用上边的方法,特别是在综合查询的时候,我比较喜欢下面两个方法来返回查询结果:
public Object excuteWithArray(java.lang.Object[] parameters)
public Object excuteWithMap(java.util.Map parameters)
当然如果是非常简单条件的查询,上边四种方法可以搞定就不要用后两种方法,后两种方法要自己构造数组或者集合。
个人认为上述执行查询方式跟java.sql. PreparedStatement差不多都是要为指定的“参数”赋值;如p1,p2,p3,array啦,map啦其中存放的都是前面需要指定的参数的值,跟PreparedStatement它们的顺序要和定义参数的顺序一样。
要注意的是
l Array参数集合中数组的顺序很定义参数的顺序要一致。
l Map参数集合中的key为参数的名称,value为参数的值
上边已经开始提及带参数的查询了,是的,Query接口中定义了引入参数的方法:
public void declareParameters(java.lang.String parameters)
如果事多了参数的情况要用逗号隔开。
JDO的查询方式不光可以引入参数,同时可以引入变量以及其他的类,下面分别是引入变量和引入类的方法,其语法和一般JAVA语法没什么差别:
引入变量,当引入多个变量的时候中间用分号隔开
public void declareVariables(java.lang.String variables)
例子:public void declareVariables(“Student students;Teacher teacher1”);
引入类,当引入多个类的时候,跟字符串的连接方式差不多,不好说明,看例子吧:
public void declareImports(java.lang.String imports)
例子:public void declareImports(“import java.util.Date;”+”import com.yourname.Student”);
既然查询就要存在查询条件,Query接口定义了过滤条件的方法:serFilter()
public void setFilter(java.lang.String filter)
filter的写法跟sql中where语句中的条件写法思想应该一样的,如查询条件为:找出学生中姓李的,那么写法如下:
query.setFilter(“name.startsWith(startname)”);
并同时找出性别等于女的,写法改为:
query.setFilter(“name.startsWith(startname) && sex==it_sex”);
JDO中关于字符串的操作函数,我怎么只见startsWith和endsWith啊,这样的话如何对字符串进行更模糊的查询啊?望指教?
JDO查询中同样也提供了排序方法,setOrdering 如下:
Public void setOrdering(java.lang.String ordering)
如按照学生的年龄排序:
query.setOrdering(“age ascending”); 升序
query.setOrdering(“age descending”);降序
如果多个排序条件,如按年龄的大小,身高的高低:
query.setOrdering(“age ascending,”+” stature descending”);
java.jdo.Extend
========================
该接口的实例代表当前数据库中存在的所有的类对象。它也是由接口PersistenceManager来创建的,如下:
public Extent getExtent(Class persistenceCapableClass, boolean subclasses)
参数subclass的真假表示含有第一个参数类的子类:真,表示包括子类;假,不包括子类。
可能有两个地方要用到Extend实例
l 得到特定持久类的一个集合。
l 针对数据库中所有特定持久类进行查询

转载于:https://www.cnblogs.com/senzjx/archive/2009/09/23/1572968.html

JDO:查询你的数据相关推荐

  1. sql查询返回xml数据之应用【转载】

    sql查询返回xml数据之应用[转载] 今天查看邮件,看到一标题Using the FOR XML Clause to Return Query Results as XML,点进去看了看,以前也是知 ...

  2. pandas使用query函数查询dataframe指定数据列的内容(数值)不包含在特定列表中的数据行(not contain in list)

    pandas使用query函数查询dataframe指定数据列的内容(数值)不包含在特定列表中的数据行(select rows which column values are not containe ...

  3. pandas使用query函数查询dataframe指定数据列的内容(数值)包含在特定列表中的数据行(select rows which column values contain in list)

    pandas使用query函数查询dataframe指定数据列的内容(数值)包含在特定列表中的数据行(select rows which column values contained in a li ...

  4. R语言dplyr包使用select函数通过索引查询或者排除数据列实战(Select Columns by Index)

    R语言dplyr包使用select函数通过索引查询或者排除数据列实战(Select Columns by Index) 目录

  5. mysql语句查询今天的数据_mysql查询当天所有数据sql语句

    mysql查询当天的所有信息: select * from test where year(regdate)=year(now()) and month(regdate)=month(now()) a ...

  6. MySQL查询本年的数据的sql语句

    MySQL查询本年的数据的sql语句: SELECT * FROM 表名 WHERE YEAR(时间字段)=YEAR(NOW());

  7. php多表数据排除,thinkphp中多表查询中防止数据重复的sql语句(必看)

    thinkphp中多表查询中防止数据重复的sql语句(必看) 这里有新鲜出炉的精品教程,程序狗速度看过来! ThinkPHP 开源 PHP 框架 ThinkPHP 是一个开源的 PHP 框架,是为了简 ...

  8. 【C 语言】文件操作 ( 配置文件读写 | 写出或更新配置文件 | 逐行遍历文件文本数据 | 获取文件中的文本行 | 查询文本行数据 | 追加文件数据 | 使用占位符方式拼接字符串 )

    文章目录 一.逐行遍历文件文本数据 1.获取文件中的文本行 2.查询文本行数据 3.追加文件数据 4.使用占位符方式拼接字符串 二.完整代码示例 一.逐行遍历文件文本数据 1.获取文件中的文本行 调用 ...

  9. mysql查询当天所有数据sql语句

    mysql查询当天的所有信息: select * from test where year(regdate)=year(now()) and month(regdate)=month(now()) a ...

最新文章

  1. oracle日期导出mysql_oracle的数据导入到mysql中,遇到一个时间转换问题
  2. ACM试题 - 括号配对问题 - Java中字符串截取和定位问题
  3. java handler的用法_Handler和内部类的正确用法
  4. 华为鸿蒙os升级怎么升,华为鸿蒙OS2.0系统怎么升级
  5. android第十二步Pull解析器解析和生成XML内容
  6. VC6++配置汇编环境和第一个简单程序
  7. Towards End-to-End Prosody Transfer for Expressive Speech Synthesis with Tacotron
  8. 巧用阿里云同步k8s.gcr镜像
  9. Proximity Based IoT Device Authentication翻译与理解
  10. 箱线图的几种画法-Python
  11. pv=nrt_中学物理之pV=nRT应用总结篇
  12. 【数据库实验】镶嵌查询
  13. 【机器学习】机器学习在爱奇艺视频分析理解中的实践
  14. miniui页面移动的时候透明_PPT中「透明度」功能,根本想不到还能这样用
  15. 降权对店铺宝贝的影响 以及降权后的维护方案
  16. 宁愿离职,也不要待在这样的公司、做这样的工作!
  17. 奖学金用计算机怎表达,奖学金感谢信怎么写
  18. 恒源云(Gpushare)_【存储优化】/hy-tmp可以扩/缩容啦
  19. Alibaba Sentinel DegradeRule 降级规则源码
  20. 在线教育大数据营销平台实战(四):CRM线索生命周期及用户画像构建

热门文章

  1. 小米手机夜间模式在哪设置?仅需2个步骤
  2. Java中线程同步锁和互斥锁有啥区别?看完你还是一脸懵逼?
  3. jQuery全选全删动态表格
  4. 2022最新可用网页百度分享按钮安装教程【网站添加百度分享按钮代码】
  5. 2003服务器u盘不显示不出来,U盘文件不显示三种解决方法
  6. 华为2288v3安装linux系统,华为RH2288 V3怎么装系统
  7. 2021医学影像分割论文:MSGSE-Net:用于皮层下脑结构分割的多尺度引导压缩和提取网络
  8. python爬取微信好友信息_python itchat 爬取微信好友信息
  9. 定积分的基本性质1 线性性质
  10. 大专学数控技术是计算机一类的吗,学专科数控技术,出来后找什么工作呢?