JDO:查询你的数据

原创 2003年07月25日 08:13:00

JDO学习笔记(一)

 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

查询你的数据

 

JDO API中和查询相关密切的有两个接口(它们的具体实现由JDO产品来完成):

java.jdo.Query

========================

      该接口的实例是由另一个接口PersistenceManager来创建的,在JDOPersistenceManager是一个比较重要的接口,我们所有的事务处理都是通过该接口来定义的。

       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的写法跟sqlwhere语句中的条件写法思想应该一样的,如查询条件为:找出学生中姓李的,那么写法如下:

       query.setFilter(“name.startsWith(startname)”);

并同时找出性别等于女的,写法改为:

       query.setFilter(“name.startsWith(startname) && sex==it_sex”);

 

       JDO中关于字符串的操作函数,我怎么只见startsWithendsWith啊,这样的话如何对字符串进行更模糊的查询啊?望指教?

 

       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         针对数据库中所有特定持久类进行查询

 

使用JAVA连接HBase时查询数据时,无限等待问题

代码就不贴了,直接上打印出来的log情况。以下是log,然后一直等待,没有结果16/07/21 09:22:36 INFO zookeeper.ZooKeeperWrapper: Reconnecti...
  • strongyoung88
  • strongyoung88
  • 2016年07月21日 11:15
  • 2409

node.js操作mongodb数据库(增删查改分页)

连接到数据库 var mongo = require('mongodb'), Server = mongo.Server, Db = mongo.Db; var server = new ...
  • PZ0605
  • PZ0605
  • 2015年03月24日 21:59
  • 1767

sql优化(查询大数据量时sql执行时间过长)

问题:Oracle数据库 sql查询的优化(成交额统计表的sql查询时间过长进行的优化) 解决办法:对sql语句中使用视图的部分替换为子查询,对查询表条件字段建立索引 引发的问题:在什么情况下建立...
  • u013167242
  • u013167242
  • 2015年11月29日 18:01
  • 3408

如何用JDO查询

查询你的数据 在JDO API中和查询相关密切的有两个接口(它们的具体实现由JDO产品来完成): java.jdo.Query ======================== 该接口的实例是由另一个...
  • RongALong
  • RongALong
  • 2011年02月16日 14:14
  • 779

jdo-java数据对象

  • 2009年02月18日 21:11
  • 226KB
  • 下载

JDO查询语言

几个词的翻译,不一定准确,呵呵。 context, 环境。 Collection,集合。有时指java.util.Collection对象,有时不是。 Class,类别。当表示一个类型的含义时,翻译成...
  • RongALong
  • RongALong
  • 2011年02月16日 14:12
  • 425

JDO介绍 Java 数据对象 (JDO) is 是一个存储Java对象的规范

  • 2008年12月30日 16:20
  • 20KB
  • 下载

Hibernate与JDO肩并肩

在theServerSide.com上有一些人声称JDO的开发人员已经把JDO带向错误的道路,并且指出Hibernate相对更优秀。然而,根据我的经验Hibernate和JDO都是O/R Mappin...
  • hongtashan11
  • hongtashan11
  • 2011年05月13日 11:26
  • 276

项目小结 spring mvc 和jdo

前言:  经过大家一个多月的加班加点,终于给一个绿线挂号网站雏形1.0版搞出来了,作为项目组成员之一,编写了部分模块,看到自己的工作有的效果,还是很欣慰,虽然这次上线的不是我们,不过感觉还有一定的成就...
  • liuzhigang1237
  • liuzhigang1237
  • 2011年06月03日 13:31
  • 622

JDO快速入门

JDO快速入门Java数据对象(Java Data Objects,JDO)是一个应用程序接口(API),它是Java程序员能够间接地访问数据库,也就是说,不需使用直接的结构化查询语言(SQL)语句。...
  • liuzhigang1237
  • liuzhigang1237
  • 2011年04月06日 17:03
  • 14837
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JDO:查询你的数据
举报原因:
原因补充:

(最多只允许输入30个字)