- 전체
- 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 | |
| } | |
| } |
본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.

