BEHAVIOR - The type of behavior.public abstract class AbstractOutsideSqlPagingExecutor<BEHAVIOR> extends Object
| 修飾子とタイプ | フィールドと説明 |
|---|---|
protected BehaviorCommandInvoker |
_behaviorCommandInvoker
The invoker of behavior command.
|
protected DBDef |
_currentDBDef
The current database definition.
|
protected OutsideSqlExecutorFactory |
_outsideSqlExecutorFactory
The factory of outside-SQL executor.
|
protected OutsideSqlOption |
_outsideSqlOption
The option of outside-SQL.
|
protected String |
_tableDbName
The DB name of table.
|
| コンストラクタと説明 |
|---|
AbstractOutsideSqlPagingExecutor(BehaviorCommandInvoker behaviorCommandInvoker,
String tableDbName,
DBDef currentDBDef,
OutsideSqlOption outsideSqlOption,
OutsideSqlExecutorFactory outsideSqlExecutorFactory) |
protected final BehaviorCommandInvoker _behaviorCommandInvoker
protected final String _tableDbName
protected final DBDef _currentDBDef
protected final OutsideSqlOption _outsideSqlOption
protected final OutsideSqlExecutorFactory _outsideSqlExecutorFactory
public AbstractOutsideSqlPagingExecutor(BehaviorCommandInvoker behaviorCommandInvoker, String tableDbName, DBDef currentDBDef, OutsideSqlOption outsideSqlOption, OutsideSqlExecutorFactory outsideSqlExecutorFactory)
public <ENTITY> PagingResultBean<ENTITY> selectPage(String path, PagingBean pmb, Class<ENTITY> entityType)
String path = MemberBhv.PATH_selectSimpleMember;
SimpleMemberPmb pmb = new SimpleMemberPmb();
pmb.setMemberName_PrefixSearch("S");
pmb.paging(20, 3); // 20 records per a page and current page number is 3
Class<SimpleMember> entityType = SimpleMember.class;
PagingResultBean<SimpleMember> page
= memberBhv.outsideSql().manualPaging().selectPage(path, pmb, entityType);
int allRecordCount = page.getAllRecordCount();
int allPageCount = page.getAllPageCount();
boolean isExistPrePage = page.isExistPrePage();
boolean isExistNextPage = page.isExistNextPage();
...
for (SimpleMember member : page) {
... = member.get...();
}
The parameter-bean needs to extend SimplePagingBean.
The way to generate it is following:
-- !df:pmb extends Paging! -- !!Integer memberId!! -- !!...!!You can realize by pagingBean's isPaging() method on your 'Parameter Comment'. It returns false when it executes Count. And it returns true when it executes Paging.
e.g. ManualPaging and MySQL /*IF pmb.isPaging()*/ select member.MEMBER_ID , member.MEMBER_NAME , memberStatus.MEMBER_STATUS_NAME -- ELSE select count(*) /*END*/ from MEMBER member /*IF pmb.isPaging()*/ left outer join MEMBER_STATUS memberStatus on member.MEMBER_STATUS_CODE = memberStatus.MEMBER_STATUS_CODE /*END*/ /*BEGIN*/ where /*IF pmb.memberId != null*/ member.MEMBER_ID = /*pmb.memberId*/'123' /*END*/ /*IF pmb.memberName != null*/ and member.MEMBER_NAME like /*pmb.memberName*/'Billy%' /*END*/ /*END*/ /*IF pmb.isPaging()*/ order by member.UPDATE_DATETIME desc /*END*/ /*IF pmb.isPaging()*/ limit /*pmb.pageStartIndex*/80, /*pmb.fetchSize*/20 /*END*/
ENTITY - The type of entity.path - The path of SQL that executes count and paging. (NotNull)pmb - The bean of paging parameter. (NotNull)entityType - The type of result entity. (NotNull)OutsideSqlNotFoundException - When the outside-SQL is not found.DangerousResultSizeException - When the result size is over the specified safety size.protected <ENTITY> PagingResultBean<ENTITY> doSelectPage(String path, PagingBean pmb, Class<ENTITY> entityType)
protected <ENTITY> PagingHandler<ENTITY> createPagingHandler(String path, PagingBean pmb, Class<ENTITY> entityType)
protected OutsideSqlEntityExecutor<BEHAVIOR> createCountExecutor()
protected <ENTITY> void throwPagingCountSelectNotCountException(String path, PagingBean pmb, Class<ENTITY> entityType, EntityDuplicatedException e)
protected <ENTITY> PagingInvoker<ENTITY> createPagingInvoker(PagingBean pmb)
protected void setupScrollableCursorIfNeeds()
public <ENTITY> ListResultBean<ENTITY> selectList(String path, PagingBean pmb, Class<ENTITY> entityType)
String path = MemberBhv.PATH_selectSimpleMember;
SimpleMemberPmb pmb = new SimpleMemberPmb();
pmb.setMemberName_PrefixSearch("S");
pmb.paging(20, 3); // 20 records per a page and current page number is 3
Class<SimpleMember> entityType = SimpleMember.class;
ListResultBean<SimpleMember> memberList
= memberBhv.outsideSql().manualPaging().selectList(path, pmb, entityType);
for (SimpleMember member : memberList) {
... = member.get...();
}
The parameter-bean needs to extend SimplePagingBean.
The way to generate it is following:
-- !df:pmb extends Paging! -- !!Integer memberId!! -- !!...!!You don't need to use pagingBean's isPaging() method on your 'Parameter Comment'.
e.g. ManualPaging and MySQL
select member.MEMBER_ID
, member.MEMBER_NAME
, memberStatus.MEMBER_STATUS_NAME
from MEMBER member
left outer join MEMBER_STATUS memberStatus
on member.MEMBER_STATUS_CODE = memberStatus.MEMBER_STATUS_CODE
/*BEGIN*/
where
/*IF pmb.memberId != null*/
member.MEMBER_ID = /*pmb.memberId*/'123'
/*END*/
/*IF pmb.memberName != null*/
and member.MEMBER_NAME like /*pmb.memberName*/'Billy%'
/*END*/
/*END*/
order by member.UPDATE_DATETIME desc
limit /*pmb.pageStartIndex*/80, /*pmb.fetchSize*/20
ENTITY - The type of entity.path - The path of SQL that executes count and paging. (NotNull)pmb - The bean of paging parameter. (NotNull)entityType - The type of result entity. (NotNull)OutsideSqlNotFoundException - When the outside-SQL is not found.DangerousResultSizeException - When the result size is over the specified safety size.protected <ENTITY> ListResultBean<ENTITY> doSelectList(String path, PagingBean pmb, Class<ENTITY> entityType)
protected OutsideSqlBasicExecutor<BEHAVIOR> createBasicExecutor()
public AbstractOutsideSqlPagingExecutor<BEHAVIOR> removeBlockComment()
public AbstractOutsideSqlPagingExecutor<BEHAVIOR> removeLineComment()
public AbstractOutsideSqlPagingExecutor<BEHAVIOR> formatSql()
public AbstractOutsideSqlPagingExecutor<BEHAVIOR> configure(StatementConfig statementConfig)
statementConfig - The configuration of statement. (NullAllowed)protected BehaviorExceptionThrower createBhvExThrower()
Copyright © 2014–2015 The DBFlute Project. All rights reserved.