Javaの共通クラス


/*
 * @(#)Common.java  1.x 01/xx/xx
 *
 * Copyright (c) 2016 CONFRAGE All rights reserved.
 *
 * Java1.7
 */
package jp.confrage;

import java.math.BigDecimal;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Types;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

import org.apache.commons.lang3.time.DateUtils;
public class Common{

  /**
   * プライベートコンストラクタ.
* 不可視にします.
*/ private Common() { } /** * 文字列型の日付をDate型に変換します.<br> * エラーの場合はParseExceptionをthrowします.<br> * @author CONFRAGE * @since 2016/04/01 * @param date 年月日(yyyyMMdd型) * @return 変換結果 * @throws ParseException 例外 */ public static Date parseStringToDate(String date) throws ParseException { DateFormat df = new SimpleDateFormat("yyyyMMdd"); df.setLenient(false); return df.parse(date); } /** * 日数を算出します.<br> * 引数で渡された文字列型の日付(from)と日付(to)を元に、fromからtoまでの日数を算出します。(fromとtoの日数を含む).<br> * @author CONFRAGE * @since 2016/04/01 * @param from 8桁の日付(yyyyMMdd型) * @param to 8桁の日付(yyyyMMdd型) * @return 計算された日数 */ public static int calcDays(String from, String to) { try { Date fromDate = parseStringToDate(from); Date toDate = parseStringToDate(to); // 日数算出 long day = ((toDate.getTime() - fromDate.getTime()) + (DateUtils.MILLIS_PER_DAY)) / (DateUtils.MILLIS_PER_DAY); return (int)day; } catch (Exception e) { throw new RuntimeException("エラー"); } } /** * 引数で渡された年(yyyy)、月(MM)を元に、その月の1か月間の日数を算出します.<br> * @author CONFRAGE * @since 2016/04/01 * @param year 4桁の日付(yyyy型) * @param month 2桁の日付(MM型) * @return 1か月の日数 */ public static int getActualMaximum(String year, String month) { int intYear = Integer.parseInt(year); int intMonth = Integer.parseInt(month); Calendar cal = Calendar.getInstance(); cal.clear(); cal.set(intYear, intMonth - 1,1); return cal.getActualMaximum(Calendar.DATE); } /** * SQLにバインド変数を設定します.<br> * @author CONFRAGE * @since 2016/04/01 * @param ps プリペアドステートメント * @param paramList パラメータリスト * @throws SQLException SQL例外 */ public static void setQueryParams (PreparedStatement ps, List<Object> paramList) throws SQLException{ if (ps != null && paramList != null) { for (int i = 0; i < paramList.size(); i++) { if (paramList.get(i) == null) { ps.setNull(i++, Types.NULL); } else if (paramList.get(i) instanceof String) { ps.setString(i++, (String)paramList.get(i)); } else if (paramList.get(i) instanceof BigDecimal) { ps.setBigDecimal(i++, (BigDecimal)paramList.get(i)); } else if (paramList.get(i) instanceof Integer) { ps.setInt(i++, (int)paramList.get(i)); } else if (paramList.get(i) instanceof Long) { ps.setLong(i++, (long)paramList.get(i)); } else if (paramList.get(i) instanceof Float) { ps.setFloat(i++, (float)paramList.get(i)); } else if (paramList.get(i) instanceof Double) { ps.setDouble(i++, (double)paramList.get(i)); } } } } /** * SQL文にパラメータを設定します.<br> * @author CONFRAGE * @since 2016/04/01 * @param conn コネクション * @param sql SQL * paramerList パラメータリストのリスト */ public static void executeBatch(Connection conn, String sql, List<List<Object>> paramLists) { try (PreparedStatement ps = conn.prepareStatement(sql)) { int i = 0; for (List<Object> paramList : paramLists) { i++; if((i % 5000) == 0) { ps.executeBatch(); } setQueryParams(ps, paramList); ps.addBatch(); } ps.executeBatch(); } catch (BatchUpdateException be) { } catch (SQLException e) { throw new RuntimeException(""); } } /** * BigDecimalの数値を###,###,###区切りにします.<br> * 1000000を1,000,000にします.<br> * @author CONFRAGE * @since 2017/03/24 * @param num 数値 * */ public static String addComma(BigDecimal num) { return NumberFormat.getInstance().format(num); } }

スポンサーリンク
  • このエントリーをはてなブックマークに追加
スポンサーリンク

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA