本文共 15066 字,大约阅读时间需要 50 分钟。
第一篇文章 介绍了,流水号的生成,可惜忘了加入循环操作,比如日循环,月循环,年循环,这次来补上。 注入方法已经在一写过了,就不写了。主要是代码部分。 直接上代码 - package com.wesley.framework.dao;
-
- import java.text.ParseException;
- import java.util.GregorianCalendar;
-
- import org.apache.commons.lang.StringUtils;
- import org.apache.commons.lang.time.DateUtils;
-
-
-
-
-
-
-
- public class PrimaryBean {
-
- public final static String YEAR = "year";
- public final static String MONTH = "month";
- public final static String DAY = "day";
-
-
-
- private String prefix;
-
-
-
- private String dataString;
-
-
-
- private String startNumber;
-
-
-
- private String dateTimeString;
-
-
-
- private String repeatCycle = DAY;
-
-
-
- private Boolean isDataBase = false;
-
- public String getPrefix() {
- return prefix;
- }
-
- public void setPrefix(String prefix) {
- this.prefix = prefix;
- }
-
- public String getDataString() {
- return dataString;
- }
-
- public void setDataString(String dataString) {
- this.dataString = dataString;
- }
-
- public String getStartNumber() {
- return startNumber;
- }
-
- public void setStartNumber(String startNumber) {
- this.startNumber = startNumber;
- }
-
- public Boolean getIsDataBase() {
- return isDataBase;
- }
-
- public void setIsDataBase(Boolean isDataBase) {
- this.isDataBase = isDataBase;
- }
-
- public String getRepeatCycle() {
- return repeatCycle;
- }
-
- public void setRepeatCycle(String repeatCycle) {
- this.repeatCycle = repeatCycle;
- }
-
- public String getDateTimeString() {
- return dateTimeString;
- }
-
- public void setDateTimeString(String dateTimeString) {
- this.dateTimeString = dateTimeString;
- }
-
-
-
-
-
-
- public GregorianCalendar getDateTime() {
- if (StringUtils.isEmpty(dateTimeString))
- return new GregorianCalendar();
- GregorianCalendar date = new GregorianCalendar();
- try {
- date.setTime(DateUtils.parseDate(this.getDateTimeString(),
- new String[] { this.getDataString() }));
- } catch (ParseException e) {
- return new GregorianCalendar();
- }
- return date;
- }
-
- }
- package com.wesley.framework.dao;
-
- import java.text.DecimalFormat;
- import java.text.SimpleDateFormat;
- import java.util.Date;
- import java.util.GregorianCalendar;
- import java.util.HashMap;
- import java.util.Map;
-
- import org.apache.commons.dbcp.BasicDataSource;
- import org.apache.commons.lang3.StringUtils;
- import org.apache.commons.lang3.time.DateUtils;
-
- import com.wesley.framework.dao.dbutils.DBHelper;
-
-
-
-
-
-
-
- public class PrimaryGenerater {
-
-
-
-
- private static PrimaryGenerater primaryGenerater = null;
-
-
-
- private DBHelper dbHelper;
-
-
-
- private Map<String, String> sqls = new HashMap<String, String>();
-
-
-
- private Map<String, PrimaryBean> primarBeans = new HashMap<String, PrimaryBean>();
-
- private PrimaryGenerater() {
- super();
- }
-
- public PrimaryGenerater(BasicDataSource database, Map<String, String> sqls) {
- super();
- this.dbHelper = new DBHelper(database);
- this.sqls = sqls;
- for (String key : sqls.keySet()) {
- this.primarBeans.put(key, this.getPrimaryBeanByDatabase(key));
- }
- }
-
- public static PrimaryGenerater newInstance(BasicDataSource database,
- Map<String, String> sqls) {
- synchronized (PrimaryGenerater.class) {
- primaryGenerater = new PrimaryGenerater(database, sqls);
- }
- return primaryGenerater;
- }
-
-
-
-
-
-
-
- public static PrimaryGenerater getInstance() {
- if (primaryGenerater == null) {
- synchronized (PrimaryGenerater.class) {
- if (primaryGenerater == null) {
- primaryGenerater = new PrimaryGenerater();
- }
- }
- }
- return primaryGenerater;
- }
-
-
-
-
-
-
-
- public synchronized PrimaryBean getPrimaryBeanByDatabase(String key) {
- if (!this.sqls.containsKey(key))
- return null;
- PrimaryBean primaryBean = this.primarBeans.get(key);
- if (primaryBean != null && !primaryBean.getIsDataBase())
- return primaryBean;
- primaryBean = dbHelper.findFirst(PrimaryBean.class, this.sqls.get(key));
- return primaryBean;
- }
-
-
-
-
-
-
-
- public synchronized String geneterNextNumberByKey(String key) {
- PrimaryBean primaryBean = this.getPrimaryBeanByDatabase(key);
- return this.geneterNextNumber(primaryBean);
- }
-
-
-
-
-
-
-
- public synchronized String geneterNextNumber(PrimaryBean primaryBean) {
- String nextNumber = this.geneterNextNumber(isRestart(primaryBean),
- primaryBean.getStartNumber());
- primaryBean.setStartNumber(nextNumber);
- String dataString = this.geneterDataString(primaryBean.getDataString());
- primaryBean.setDateTimeString(dataString);
- String serialNumber = primaryBean.getPrefix() + dataString + nextNumber;
- return serialNumber;
- }
-
- private synchronized Boolean isRestart(PrimaryBean primaryBean) {
- GregorianCalendar gcNow = new GregorianCalendar();
- GregorianCalendar date = primaryBean.getDateTime();
- if (StringUtils.equalsIgnoreCase(PrimaryBean.YEAR,
- primaryBean.getRepeatCycle())) {
- if (gcNow.get(GregorianCalendar.YEAR) == date
- .get(GregorianCalendar.YEAR))
- return false;
- }
- if (StringUtils.equalsIgnoreCase(PrimaryBean.MONTH,
- primaryBean.getRepeatCycle())) {
- if (gcNow.get(GregorianCalendar.YEAR) == date
- .get(GregorianCalendar.YEAR)
- && gcNow.get(GregorianCalendar.MONTH) == date
- .get(GregorianCalendar.MONTH))
- return false;
- }
- if (StringUtils.equalsIgnoreCase(PrimaryBean.DAY,
- primaryBean.getRepeatCycle())) {
- if (DateUtils.isSameDay(gcNow, date))
- return false;
- }
- return true;
- }
-
-
-
-
-
-
-
- public synchronized String geneterNextNumber(Boolean isRestart,
- String startNumber) {
- Long temp = Long.valueOf(startNumber) + 1;
- StringBuilder sb = new StringBuilder();
- for (int i = 0; i < startNumber.length(); i++)
- sb.append("0");
- DecimalFormat df = new DecimalFormat(sb.toString());
- return isRestart ? sb.toString() : df.format(temp);
- }
-
-
-
-
-
-
-
- private synchronized String geneterDataString(String dataformat) {
- SimpleDateFormat formatter = new SimpleDateFormat(dataformat);
- return formatter.format(new Date());
- }
- }
- package com.wesley.framework.dao.dbutils;
-
- import java.math.BigDecimal;
- import java.sql.SQLException;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.Map;
-
- import org.apache.commons.dbcp.BasicDataSource;
- import org.apache.commons.dbutils.BasicRowProcessor;
- import org.apache.commons.dbutils.QueryRunner;
- import org.apache.commons.dbutils.handlers.BeanHandler;
- import org.apache.commons.dbutils.handlers.BeanListHandler;
- import org.apache.commons.dbutils.handlers.MapHandler;
- import org.apache.commons.dbutils.handlers.MapListHandler;
- import org.apache.commons.dbutils.handlers.ScalarHandler;
- import org.apache.commons.logging.Log;
- import org.apache.commons.logging.LogFactory;
-
- import com.wesley.framework.commen.StringFormat;
-
- public class DBHelper {
- private static final Log logger = LogFactory.getLog(DBHelper.class);
-
- private BasicDataSource dataSource;
- private QueryRunner queryRunner;
-
- public DBHelper(BasicDataSource dataSource) {
- super();
- this.dataSource = dataSource;
- }
-
- public void setDataSource(BasicDataSource dataSource) {
- this.dataSource = dataSource;
- }
-
-
-
-
-
-
-
-
- public int update(String sql) {
- return update(sql, null);
- }
-
-
-
-
-
-
-
-
-
-
-
-
- public int update(String sql, Object param) {
- return update(sql, new Object[] { param });
- }
-
-
-
-
-
-
-
-
-
-
- public int update(String sql, Object[] params) {
- queryRunner = new QueryRunner(dataSource);
- int affectedRows = 0;
- try {
- if (params == null) {
- affectedRows = queryRunner.update(sql);
- } else {
- affectedRows = queryRunner.update(sql, params);
- }
- } catch (SQLException e) {
- logger.error("Error occured while attempting to update data", e);
- }
- return affectedRows;
- }
-
-
-
-
-
-
-
-
-
-
- public int[] batchUpdate(String sql, Object[][] params) {
- queryRunner = new QueryRunner(dataSource);
- int[] affectedRows = new int[0];
- try {
- affectedRows = queryRunner.batch(sql, params);
- } catch (SQLException e) {
- logger.error("Error occured while attempting to batch update data",
- e);
- }
- return affectedRows;
- }
-
-
-
-
-
-
-
-
- public List<Map<String, Object>> find(String sql) {
- return find(sql, null);
- }
-
-
-
-
-
-
-
-
-
-
- public List<Map<String, Object>> find(String sql, Object param) {
- return find(sql, new Object[] { param });
- }
-
-
-
-
-
-
-
-
-
-
- public List<Map<String, Object>> find(String sql, Object[] params) {
- queryRunner = new QueryRunner(dataSource);
- List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
- try {
- if (params == null) {
- list = (List<Map<String, Object>>) queryRunner.query(sql,
- new MapListHandler());
- } else {
- list = (List<Map<String, Object>>) queryRunner.query(sql,
- new MapListHandler(), params);
- }
- } catch (SQLException e) {
- logger.error("Error occured while attempting to query data", e);
- }
- return list;
- }
-
-
-
-
-
-
-
-
-
-
- public <T> List<T> find(Class<T> entityClass, String sql) {
- return find(entityClass, sql, null);
- }
-
-
-
-
-
-
-
-
-
-
-
-
- public <T> List<T> find(Class<T> entityClass, String sql, Object param) {
- return find(entityClass, sql, new Object[] { param });
- }
-
-
-
-
-
-
-
-
-
-
-
-
- public <T> List<T> find(Class<T> entityClass, String sql, Object[] params) {
- queryRunner = new QueryRunner(dataSource);
- List<T> list = new ArrayList<T>();
- try {
- if (params == null) {
- list = queryRunner.query(sql, new BeanListHandler<T>(
- entityClass, new BasicRowProcessor(
- new StrategyBeanProcessor(new HumpMatcher()))));
- } else {
- list = queryRunner.query(sql, new BeanListHandler<T>(
- entityClass, new BasicRowProcessor(
- new StrategyBeanProcessor(new HumpMatcher()))),
- params);
- }
- } catch (SQLException e) {
- logger.error("Error occured while attempting to query data", e);
- }
- return list;
- }
-
-
-
-
-
-
-
-
-
-
- public <T> T findFirst(Class<T> entityClass, String sql) {
- return findFirst(entityClass, sql, null);
- }
-
-
-
-
-
-
-
-
-
-
-
-
- public <T> T findFirst(Class<T> entityClass, String sql, Object param) {
- return findFirst(entityClass, sql, new Object[] { param });
- }
-
-
-
-
-
-
-
-
-
-
-
-
- @SuppressWarnings({ "unchecked" })
- public <T> T findFirst(Class<T> entityClass, String sql, Object[] params) {
- queryRunner = new QueryRunner(dataSource);
- Object object = null;
- try {
- if (params == null) {
- object = queryRunner
- .query(sql, new BeanHandler<T>(entityClass));
- } else {
- object = queryRunner.query(sql,
- new BeanHandler<T>(entityClass), params);
- }
- } catch (SQLException e) {
- logger.error("Error occured while attempting to query data", e);
- }
- return (T) object;
- }
-
-
-
-
-
-
-
-
- public Map<String, Object> findFirst(String sql) {
- return findFirst(sql, null);
- }
-
-
-
-
-
-
-
-
-
-
- public Map<String, Object> findFirst(String sql, Object param) {
- return findFirst(sql, new Object[] { param });
- }
-
-
-
-
-
-
-
-
-
-
- public Map<String, Object> findFirst(String sql, Object[] params) {
- queryRunner = new QueryRunner(dataSource);
- Map<String, Object> map = null;
- try {
- if (params == null) {
- map = (Map<String, Object>) queryRunner.query(sql,
- new MapHandler());
- } else {
- map = (Map<String, Object>) queryRunner.query(sql,
- new MapHandler(), params);
- }
- } catch (SQLException e) {
- logger.error("Error occured while attempting to query data", e);
- }
- return map;
- }
-
-
-
-
-
-
-
-
-
-
- public Object findBy(String sql, String columnName) {
- return findBy(sql, columnName, null);
- }
-
-
-
-
-
-
-
-
-
-
-
-
- public Object findBy(String sql, String columnName, Object param) {
- return findBy(sql, columnName, new Object[] { param });
- }
-
-
-
-
-
-
-
-
-
-
-
-
- public Object findBy(String sql, String columnName, Object[] params) {
- queryRunner = new QueryRunner(dataSource);
- Object object = null;
- try {
- if (params == null) {
- object = queryRunner.query(sql, new ScalarHandler(columnName));
- } else {
- object = queryRunner.query(sql, new ScalarHandler(columnName),
- params);
- }
- } catch (SQLException e) {
- logger.error("Error occured while attempting to query data", e);
- }
- return object;
- }
-
-
-
-
-
-
-
-
-
-
- public Object findBy(String sql, int columnIndex) {
- return findBy(sql, columnIndex, null);
- }
-
- public boolean exist(String sql, Object... params) {
- int x = this.findInteger(
- StringFormat.format("SELECT COUNT(*) FROM ({0})", sql), params);
- return x <= 0 ? false : true;
- }
-
- public int findInteger(String sql, Object... params) {
- Object o = findBy(sql, null, params);
- if (BigDecimal.class.equals(o.getClass()))
- return ((BigDecimal) o).intValue();
- return (Integer) o;
- }
-
-
-
-
-
-
-
-
-
-
-
-
- public Object findBy(String sql, int columnIndex, Object param) {
- return findBy(sql, columnIndex, new Object[] { param });
- }
-
-
-
-
-
-
-
-
-
-
-
-
- public Object findBy(String sql, int columnIndex, Object[] params) {
- queryRunner = new QueryRunner(dataSource);
- Object object = null;
- try {
- if (params == null) {
- object = queryRunner.query(sql, new ScalarHandler(columnIndex));
- } else {
- object = queryRunner.query(sql, new ScalarHandler(columnIndex),
- params);
- }
- } catch (SQLException e) {
- logger.error("Error occured while attempting to query data", e);
- }
- return object;
- }
-
- }
转载地址:http://pybvi.baihongyu.com/