Java tutorial
/* * Copyright 2014 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 cn.cuizuoli.appranking.service; import java.util.List; import javax.annotation.Resource; import org.apache.ibatis.session.ExecutorType; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.joda.time.DateTime; import org.springframework.jdbc.support.incrementer.DataFieldMaxValueIncrementer; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import cn.cuizuoli.appranking.model.AppRanking; import cn.cuizuoli.appranking.repository.AppRankingDailyRepository; import cn.cuizuoli.appranking.repository.AppRankingMonthlyRepository; import cn.cuizuoli.appranking.repository.AppRankingRepository; import cn.cuizuoli.appranking.repository.AppRankingSeqRepository; import cn.cuizuoli.appranking.repository.AppRankingWeeklyRepository; /** * AppRankingService * @author cuizuoli */ @Service public class AppRankingService { @Resource private DataFieldMaxValueIncrementer appRankingIncrementer; @Resource private AppRankingRepository appRankingRepository; @Resource private AppRankingSeqRepository appRankingSeqRepository; @Resource private AppRankingDailyRepository appRankingDailyRepository; @Resource private AppRankingWeeklyRepository appRankingWeeklyRepository; @Resource private AppRankingMonthlyRepository appRankingMonthlyRepository; @Resource private SqlSessionFactory sqlSessionFactory; /** * add * @param appRanking */ @Transactional public void add(AppRanking appRanking) { appRanking.setId(appRankingIncrementer.nextStringValue()); appRanking.setDateHour(DateTime.now().toString("yyyyMMddHH")); appRankingRepository.insert(appRanking); } /** * batchAdd * @param appRankingList */ @Transactional public void batchAdd(List<AppRanking> appRankingList) { SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH, false); AppRankingRepository batchAppRankingRepository = sqlSession.getMapper(AppRankingRepository.class); int i = 1; for (AppRanking appRanking : appRankingList) { appRanking.setId(appRankingIncrementer.nextStringValue()); appRanking.setDateHour(DateTime.now().toString("yyyyMMddHH")); batchAppRankingRepository.insert(appRanking); if (i % 100 == 0) { sqlSession.commit(); } i++; } sqlSession.commit(); sqlSession.close(); } /** * appRankingRepository */ @Transactional public void resetSeq() { appRankingSeqRepository.update(); } /** * addEod */ @Transactional public void addEod() { appRankingDailyRepository.insert(); } /** * addEow */ @Transactional public void addEow() { appRankingWeeklyRepository.insert(); } /** * addEom */ @Transactional public void addEom() { appRankingMonthlyRepository.insert(); } /** * deleteAppRankingHour */ @Transactional public void deleteAppRankingHour() { String dateHour = DateTime.now().minusWeeks(1).toString("yyyyMMddHH"); appRankingRepository.delete(dateHour); appRankingRepository.optimize(); } }