查询分选择型和非选择型的,选择型的返回查询结果(如SELECT),非选择型的没有返回结果(如INSERT, DELETE, UPDATE)。
查询可以两种方式建立,直接使用Query对象,或者是用映射的命名查询(用CayenneModeler映射,通过名称使用),后者更方便使用。
DataContext提供了一些常用的查询方法。
Running Query Instances 使用Query对象实例
- public java.util.List performQuery(Query query)
最常用的选择型查询. - public ResultIterator performIteratedQuery(Query query) throws CayenneException
返回迭代器的选择型查询,结果是JDBC ResultSet. 这种方式的优缺点"Performance Tuning" 一节说明。唯一的可以抛出检查的异常的。所有返回的的ResultIterator 需要通过close()方法显式地清理。 - public int[] performNonSelectingQuery(Query query)
执行非选择查询,返回影响到的行数. - public QueryResponse performGenericQuery(Query query)
一个通用的查询方法。用来查询复杂结果集。比如存储过程可以有多与一个的结果集、执行多个更新,并且返回OUT参数。
Running Mapped Queries 使用映射查询
下面是使用名称映射查询(用 CayenneModeler的DataMap XML 文件)。
- public java.util.List performQuery(String name, boolean expireCachedLists)
运行存储在DataMap中的命名的选择查询.
- public java.util.List performQuery(String name, Map parameters, boolean expireCachedLists)
运行存储在DataMap中的命名的选择查询,并且使用Map类型的命名的参数。
- public int[] performNonSelectingQuery(String name)
运行非选择的存储在DataMap中的命名的查询。
- public int[] performNonSelectingQuery(String name, Map parameters)
运行非选择的存储在DataMap中的命名的查询,并且使用Map类型的命名的参数。