- 전체
- JAVA 일반
- JAVA 수학
- JAVA 그래픽
- JAVA 자료구조
- JAVA 인공지능
- JAVA 인터넷
- Java Framework
- Java GUI (AWT,SWING,SWT,JFACE)
- SWT and RCP (web RAP/RWT)[eclipse], EMF
Java Framework MyBatisPagingItemReader.java
2020.11.07 15:22
MyBatisPagingItemReader.java
---------------------------------
/** | |
* Copyright 2010-2020 the original author or authors. | |
* | |
* Licensed under the Apache License, Version 2.0 (the "License"); | |
* you may not use this file except in compliance with the License. | |
* You may obtain a copy of the License at | |
* | |
* http://www.apache.org/licenses/LICENSE-2.0 | |
* | |
* Unless required by applicable law or agreed to in writing, software | |
* distributed under the License is distributed on an "AS IS" BASIS, | |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
* See the License for the specific language governing permissions and | |
* limitations under the License. | |
*/ | |
package org.mybatis.spring.batch; | |
import static org.springframework.util.Assert.notNull; | |
import static org.springframework.util.ClassUtils.getShortName; | |
import java.util.HashMap; | |
import java.util.Map; | |
import java.util.concurrent.CopyOnWriteArrayList; | |
import org.apache.ibatis.session.ExecutorType; | |
import org.apache.ibatis.session.SqlSession; | |
import org.apache.ibatis.session.SqlSessionFactory; | |
import org.mybatis.spring.SqlSessionTemplate; | |
import org.springframework.batch.item.database.AbstractPagingItemReader; | |
/** | |
* {@code org.springframework.batch.item.ItemReader} for reading database records using MyBatis in a paging fashion. | |
* <p> | |
* Provided to facilitate the migration from Spring-Batch iBATIS 2 page item readers to MyBatis 3. | |
* | |
* @author Eduardo Macarron | |
* | |
* @since 1.1.0 | |
*/ | |
public class MyBatisPagingItemReader<T> extends AbstractPagingItemReader<T> { | |
private String queryId; | |
private SqlSessionFactory sqlSessionFactory; | |
private SqlSessionTemplate sqlSessionTemplate; | |
private Map<String, Object> parameterValues; | |
public MyBatisPagingItemReader() { | |
setName(getShortName(MyBatisPagingItemReader.class)); | |
} | |
/** | |
* Public setter for {@link SqlSessionFactory} for injection purposes. | |
* | |
* @param sqlSessionFactory | |
* a factory object for the {@link SqlSession}. | |
*/ | |
public void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory) { | |
this.sqlSessionFactory = sqlSessionFactory; | |
} | |
/** | |
* Public setter for the statement id identifying the statement in the SqlMap configuration file. | |
* | |
* @param queryId | |
* the id for the statement | |
*/ | |
public void setQueryId(String queryId) { | |
this.queryId = queryId; | |
} | |
/** | |
* The parameter values to be used for the query execution. | |
* | |
* @param parameterValues | |
* the values keyed by the parameter named used in the query string. | |
*/ | |
public void setParameterValues(Map<String, Object> parameterValues) { | |
this.parameterValues = parameterValues; | |
} | |
/** | |
* Check mandatory properties. | |
* | |
* @see org.springframework.beans.factory.InitializingBean#afterPropertiesSet() | |
*/ | |
@Override | |
public void afterPropertiesSet() throws Exception { | |
super.afterPropertiesSet(); | |
notNull(sqlSessionFactory, "A SqlSessionFactory is required."); | |
notNull(queryId, "A queryId is required."); | |
} | |
@Override | |
protected void doReadPage() { | |
if (sqlSessionTemplate == null) { | |
sqlSessionTemplate = new SqlSessionTemplate(sqlSessionFactory, ExecutorType.BATCH); | |
} | |
Map<String, Object> parameters = new HashMap<>(); | |
if (parameterValues != null) { | |
parameters.putAll(parameterValues); | |
} | |
parameters.put("_page", getPage()); | |
parameters.put("_pagesize", getPageSize()); | |
parameters.put("_skiprows", getPage() * getPageSize()); | |
if (results == null) { | |
results = new CopyOnWriteArrayList<>(); | |
} else { | |
results.clear(); | |
} | |
results.addAll(sqlSessionTemplate.selectList(queryId, parameters)); | |
} | |
@Override | |
protected void doJumpToPage(int itemIndex) { | |
// Not Implemented | |
} | |
} |
본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.