Skip to content

Commit 5b06df3

Browse files
authored
Merge pull request #1310 from romank0/java-api-docs-for-cursor
Adds mention of selectCursor to java API documentation page.
2 parents 19a831b + fab70d2 commit 5b06df3

File tree

5 files changed

+49
-2
lines changed

5 files changed

+49
-2
lines changed

src/site/es/xdoc/java-api.xml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,21 +189,30 @@ Configuration getConfiguration();</source>
189189
<p>Estos métodos se usan para ejecutar las sentencias SELECT, INSERT, UPDATE y DELETE que se hayan definido en los ficheros xml de mapeo SQL. Son bastante auto explicativos, cada uno recibe el ID del statement y el objeto de parámetro, que puede ser una primitiva, un JavaBean, un POJO o un Map.</p>
190190
<source><![CDATA[<T> T selectOne(String statement, Object parameter)
191191
<E> List<E> selectList(String statement, Object parameter)
192+
<T> Cursor<T> selectCursor(String statement, Object parameter)
192193
<K,V> Map<K,V> selectMap(String statement, Object parameter, String mapKey)
193194
int insert(String statement, Object parameter)
194195
int update(String statement, Object parameter)
195196
int delete(String statement, Object parameter)]]></source>
196197
<p>La diferencia entre selectOne y selectList es que selectOne debe devolver sólo un objeto. Si hay más de uno se lanzará una excepción. Si no hay ninguno se devolverá null. Si no sabes cuantos objetos esperas recibir, usa selectList. Si quieres comprobar la existencia de un objeto sería mejor que devuelvas un count(). SelectMap es un caso especial diseñado para convertir una lista de resultados en un Map basado en las propiedades de los objetos recibidos. Como no todas las sentencias requieren un parámetro, estos métodos han sido sobrecargados de forma que se proporcionan versiones que no reciben el parámetro objeto.</p>
198+
<p>A Cursor offers the same results as a List, except it fetches data lazily using an Iterator.</p>
199+
<source><![CDATA[try (Cursor<MyEntity> entities = session.selectCursor(statement, param)) {
200+
for (MyEntity entity:entities) {
201+
// process one entity
202+
}
203+
}]]></source>
197204
<p>El valor devuelto por los métodos insert, update and delete indica el número de filas afectadas por la sentencia.</p>
198205
<source><![CDATA[<T> T selectOne(String statement)
199206
<E> List<E> selectList(String statement)
207+
<T> Cursor<T> selectCursor(String statement)
200208
<K,V> Map<K,V> selectMap(String statement, String mapKey)
201209
int insert(String statement)
202210
int update(String statement)
203211
int delete(String statement)]]></source>
204212

205213
<p>Finalmente hay tres versiones avanzadas de los métodos select que te permiten restringir el rango de filas devueltas, o proporcionar lógica de tratamiento de resultados personalizada, normalmente para grandes cantidades de datos.</p>
206214
<source><![CDATA[<E> List<E> selectList (String statement, Object parameter, RowBounds rowBounds)
215+
<T> Cursor<T> selectCursor(String statement, Object parameter, RowBounds rowBounds)
207216
<K,V> Map<K,V> selectMap(String statement, Object parameter, String mapKey, RowBounds rowbounds)
208217
void select (String statement, Object parameter, ResultHandler<T> handler)
209218
void select (String statement, Object parameter, RowBounds rowBounds, ResultHandler<T> handler)]]></source>

src/site/ja/xdoc/java-api.xml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -190,21 +190,30 @@ Configuration getConfiguration();</source>
190190
<p>これらは、SQL Mapper で定義されている SELECT, INSERT, UPDATE, DELETE の各メソッドを実行するためのメソッドです。ほとんど自明ですが、それぞれ引数としてステートメントの ID とステートメントの引数オブジェクト(プリミティブ、JavaBean、POJO、Map のいずれか)を取ります。</p>
191191
<source><![CDATA[<T> T selectOne(String statement, Object parameter)
192192
<E> List<E> selectList(String statement, Object parameter)
193+
<T> Cursor<T> selectCursor(String statement, Object parameter)
193194
<K,V> Map<K,V> selectMap(String statement, Object parameter, String mapKey)
194195
int insert(String statement, Object parameter)
195196
int update(String statement, Object parameter)
196197
int delete(String statement, Object parameter)]]></source>
197198
<p>selectOne と selectList の違いは、selectOne は1つのオブジェクトまたは null を返さなくてはならないということです。複数のオブジェクトが返されると例外が発生します。結果のオブジェクト数が未知の場合は selectList を使用してください。オブジェクトが存在するかどうかを確認したいのなら、カウント結果(0 or 1)を返すようにした方が良いでしょう。selectMap は、結果のリストを mapKey で指定したプロパティに基づいたマップに格納して返す特殊なメソッドです。<br />ステートメントの引数は不要な場合もあるので、parameter オブジェクトの引数を持たないオーバーロードメソッドも用意されています。</p>
199+
<p>A Cursor offers the same results as a List, except it fetches data lazily using an Iterator.</p>
200+
<source><![CDATA[try (Cursor<MyEntity> entities = session.selectCursor(statement, param)) {
201+
for (MyEntity entity:entities) {
202+
// process one entity
203+
}
204+
}]]></source>
198205
<p>insert, update, delete の各メソッドは、ステートメントの実行によって影響を受けた行数を返します。</p>
199206
<source><![CDATA[<T> T selectOne(String statement)
200207
<E> List<E> selectList(String statement)
208+
<T> Cursor<T> selectCursor(String statement)
201209
<K,V> Map<K,V> selectMap(String statement, String mapKey)
202210
int insert(String statement)
203211
int update(String statement)
204212
int delete(String statement)]]></source>
205213

206214
<p>最後に、高度な処理を行うための select メソッドがあります。これらは主に非常に大きなデータセットを扱う場合に、返される行の範囲を限定したり、カスタムの ResultHandler を使って独自に結果処理を行うことができるようになっています。</p>
207215
<source><![CDATA[<E> List<E> selectList (String statement, Object parameter, RowBounds rowBounds)
216+
<T> Cursor<T> selectCursor(String statement, Object parameter, RowBounds rowBounds)
208217
<K,V> Map<K,V> selectMap(String statement, Object parameter, String mapKey, RowBounds rowbounds)
209218
void select (String statement, Object parameter, ResultHandler<T> handler)
210219
void select (String statement, Object parameter, RowBounds rowBounds, ResultHandler<T> handler)]]></source>

src/site/ko/xdoc/java-api.xml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -248,6 +248,7 @@ Configuration getConfiguration();</source>
248248
메소드 각각은 구문의 ID 와 파라미터 객체(원시타입, 자바빈, POJO 또는 Map)을 가진다.</p>
249249
<source><![CDATA[<T> T selectOne(String statement, Object parameter)
250250
<E> List<E> selectList(String statement, Object parameter)
251+
<T> Cursor<T> selectCursor(String statement, Object parameter)
251252
<K,V> Map<K,V> selectMap(String statement, Object parameter, String mapKey)
252253
int insert(String statement, Object parameter)
253254
int update(String statement, Object parameter)
@@ -259,9 +260,16 @@ int delete(String statement, Object parameter)]]></source>
259260
selectMap은 결과 목록을 Map으로 변환하기 위해 디자인된 특별한 경우이다.
260261
이 경우 결과 객체의 프로퍼티 중 하나를 키로 사용하게 된다.
261262
모든 구문이 파라미터를 필요로 하지는 않기 때문에 파라미터 객체를 요구하지 않는 형태로 오버로드되었다.</p>
263+
<p>A Cursor offers the same results as a List, except it fetches data lazily using an Iterator.</p>
264+
<source><![CDATA[try (Cursor<MyEntity> entities = session.selectCursor(statement, param)) {
265+
for (MyEntity entity:entities) {
266+
// process one entity
267+
}
268+
}]]></source>
262269
<p>insert, update 그리고 delete 메소드에 의해 리턴되는 값은 실행된 구문에 의해 영향을 받은 레코드수를 표시한다. </p>
263270
<source><![CDATA[<T> T selectOne(String statement)
264271
<E> List<E> selectList(String statement)
272+
<T> Cursor<T> selectCursor(String statement)
265273
<K,V> Map<K,V> selectMap(String statement, String mapKey)
266274
int insert(String statement)
267275
int update(String statement)
@@ -270,6 +278,7 @@ int delete(String statement)]]></source>
270278
<p>마지막으로 리턴되는 데이터의 범위를 제한하거나 결과를 핸들링 하는 로직을 부여할 수 있는 3개의 select 메소드가 있다.</p>
271279

272280
<source><![CDATA[<E> List<E> selectList (String statement, Object parameter, RowBounds rowBounds)
281+
<T> Cursor<T> selectCursor(String statement, Object parameter, RowBounds rowBounds)
273282
<K,V> Map<K,V> selectMap(String statement, Object parameter, String mapKey, RowBounds rowbounds)
274283
void select (String statement, Object parameter, ResultHandler<T> handler)
275284
void select (String statement, Object parameter, RowBounds rowBounds, ResultHandler<T> handler)]]></source>

src/site/xdoc/java-api.xml

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -195,21 +195,31 @@ Configuration getConfiguration();</source>
195195
<p>These methods are used to execute SELECT, INSERT, UPDATE and DELETE statements that are defined in your SQL Mapping XML files. They are pretty self explanatory, each takes the ID of the statement and the Parameter Object, which can be a primitive (auto-boxed or wrapper), a JavaBean, a POJO or a Map.</p>
196196
<source><![CDATA[<T> T selectOne(String statement, Object parameter)
197197
<E> List<E> selectList(String statement, Object parameter)
198+
<T> Cursor<T> selectCursor(String statement, Object parameter)
198199
<K,V> Map<K,V> selectMap(String statement, Object parameter, String mapKey)
199200
int insert(String statement, Object parameter)
200201
int update(String statement, Object parameter)
201202
int delete(String statement, Object parameter)]]></source>
202203
<p>The difference between selectOne and selectList is only in that selectOne must return exactly one object or null (none). If any more than one, an exception will be thrown. If you don't' know how many objects are expected, use selectList. If you want to check for the existence of an object, you're better off returning a count (0 or 1). The selectMap is a special case in that it is designed to convert a list of results into a Map based on one of the properties in the resulting objects. Because not all statements require a parameter, these methods are overloaded with versions that do not require the parameter object.</p>
204+
<p>A Cursor offers the same results as a List, except it fetches data lazily using an Iterator.</p>
205+
<source><![CDATA[try (Cursor<MyEntity> entities = session.selectCursor(statement, param)) {
206+
for (MyEntity entity:entities) {
207+
// process one entity
208+
}
209+
}]]></source>
210+
203211
<p>The value returned by the insert, update and delete methods indicate the number of rows affected by the statement.</p>
204212
<source><![CDATA[<T> T selectOne(String statement)
205213
<E> List<E> selectList(String statement)
214+
<T> Cursor<T> selectCursor(String statement)
206215
<K,V> Map<K,V> selectMap(String statement, String mapKey)
207216
int insert(String statement)
208217
int update(String statement)
209218
int delete(String statement)]]></source>
210219

211220
<p>Finally, there are three advanced versions of the select methods that allow you to restrict the range of rows to return, or provide custom result handling logic, usually for very large data sets.</p>
212221
<source><![CDATA[<E> List<E> selectList (String statement, Object parameter, RowBounds rowBounds)
222+
<T> Cursor<T> selectCursor(String statement, Object parameter, RowBounds rowBounds)
213223
<K,V> Map<K,V> selectMap(String statement, Object parameter, String mapKey, RowBounds rowbounds)
214224
void select (String statement, Object parameter, ResultHandler<T> handler)
215225
void select (String statement, Object parameter, RowBounds rowBounds, ResultHandler<T> handler)]]></source>
@@ -233,7 +243,7 @@ public interface ResultHandler<T> {
233243
<p>Using a ResultHandler has two limitations that you should be aware of:</p>
234244

235245
<ul>
236-
<li>Data got from an method called with a ResultHandler will not be cached.</li>
246+
<li>Data got from a method called with a ResultHandler will not be cached.</li>
237247
<li>When using advanced resultmaps MyBatis will probably require several rows to build an object. If a ResultHandler is used you may be given an object whose associations or collections are not yet filled.</li>
238248
</ul>
239249

@@ -303,7 +313,7 @@ try (SqlSession session = sqlSessionFactory.openSession()) {
303313
int deleteAuthor(int id);
304314
}]]></source>
305315
<p>In a nutshell, each Mapper method signature should match that of the SqlSession method that it's associated to, but without the String parameter ID. Instead, the method name must match the mapped statement ID.</p>
306-
<p>In addition, the return type must match that of the expected result type for single results or an array or collection for multiple results. All of the usual types are supported, including: Primitives, Maps, POJOs and JavaBeans.</p>
316+
<p>In addition, the return type must match that of the expected result type for single results or an array or collection for multiple results or Cursor. All of the usual types are supported, including: Primitives, Maps, POJOs and JavaBeans.</p>
307317
<p><span class="label important">NOTE</span> Mapper interfaces do not need to implement any interface or extend any class. As long as the method signature can be used to uniquely identify a corresponding mapped statement.</p>
308318
<p><span class="label important">NOTE</span> Mapper interfaces can extend other interfaces. Be sure that you have the statements in the appropriate namespace when using XML binding to Mapper interfaces. Also, the only limitation is that you cannot have the same method signature in two interfaces in a hierarchy (a bad idea anyway).</p>
309319
<p>You can pass multiple parameters to a mapper method. If you do, they will be named by the literal "param" followed by their position in the parameter list by default, for example: #{param1}, #{param2} etc. If you wish to change the name of the parameters (multiple only), then you can use the @Param("paramName") annotation on the parameter.</p>

src/site/zh/xdoc/java-api.xml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,14 +197,23 @@ Configuration getConfiguration();</source>
197197
 <p>这些方法被用来执行定义在 SQL 映射的 XML 文件中的 SELECT、INSERT、UPDATE 和 DELETE 语句。它们都会自行解释,每一句都使用语句的 ID 属性和参数对象,参数可以是原生类型(自动装箱或包装类)、JavaBean、POJO 或 Map。</p>
198198
<source><![CDATA[<T> T selectOne(String statement, Object parameter)
199199
<E> List<E> selectList(String statement, Object parameter)
200+
<T> Cursor<T> selectCursor(String statement, Object parameter)
200201
<K,V> Map<K,V> selectMap(String statement, Object parameter, String mapKey)
201202
int insert(String statement, Object parameter)
202203
int update(String statement, Object parameter)
203204
int delete(String statement, Object parameter)]]></source>
204205
 <p>selectOne 和 selectList 的不同仅仅是 selectOne 必须返回一个对象或 null 值。如果返回值多于一个,那么就会抛出异常。如果你不知道返回对象的数量,请使用 selectList。如果需要查看返回对象是否存在,可行的方案是返回一个值即可(0 或 1)。selectMap 稍微特殊一点,因为它会将返回的对象的其中一个属性作为 key 值,将对象作为 value 值,从而将多结果集转为 Map 类型值。因为并不是所有语句都需要参数,所以这些方法都重载成不需要参数的形式。
205206
 </p>
207+
<p>A Cursor offers the same results as a List, except it fetches data lazily using an Iterator.</p>
208+
<source><![CDATA[try (Cursor<MyEntity> entities = session.selectCursor(statement, param)) {
209+
for (MyEntity entity:entities) {
210+
// process one entity
211+
}
212+
}]]></source>
213+
<p>The value returned by the insert, update and delete methods indicate the number of rows affected by the statement.</p>
206214
<source><![CDATA[<T> T selectOne(String statement)
207215
<E> List<E> selectList(String statement)
216+
<T> Cursor<T> selectCursor(String statement)
208217
<K,V> Map<K,V> selectMap(String statement, String mapKey)
209218
int insert(String statement)
210219
int update(String statement)
@@ -213,6 +222,7 @@ int delete(String statement)]]></source>
213222
 <p>最后,还有 select 方法的三个高级版本,它们允许你限制返回行数的范围,或者提供自定义结果控制逻辑,这通常在数据集合庞大的情形下使用。
214223
</p>
215224
<source><![CDATA[<E> List<E> selectList (String statement, Object parameter, RowBounds rowBounds)
225+
<T> Cursor<T> selectCursor(String statement, Object parameter, RowBounds rowBounds)
216226
<K,V> Map<K,V> selectMap(String statement, Object parameter, String mapKey, RowBounds rowbounds)
217227
void select (String statement, Object parameter, ResultHandler<T> handler)
218228
void select (String statement, Object parameter, RowBounds rowBounds, ResultHandler<T> handler)]]></source>

0 commit comments

Comments
 (0)