本文共 9559 字,大约阅读时间需要 31 分钟。
- package com.wesley.framework.dao;
-
- import java.text.DecimalFormat;
- import java.text.SimpleDateFormat;
- import java.util.Date;
- import java.util.HashMap;
- import java.util.Map;
-
- import org.apache.commons.dbcp.BasicDataSource;
- import org.springframework.beans.factory.xml.XmlBeanFactory;
- import org.springframework.core.io.ClassPathResource;
-
- import com.wesley.framework.dao.dbutils.DBHelper;
-
- public class PrimaryGenerater {
-
- private static PrimaryGenerater primaryGenerater = null;
- private DBHelper<PrimaryBean> 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<PrimaryBean>(database, PrimaryBean.class);
- 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.query(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(primaryBean.getStartNumber());
- primaryBean.setStartNumber(nextNumber);
- String dataString = this.geneterDataString(primaryBean.getDataString());
- String serialNumber = primaryBean.getPrefix() + dataString + nextNumber;
- return serialNumber;
- }
-
-
-
-
-
-
-
- public synchronized String geneterNextNumber(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 df.format(temp);
- }
-
-
-
-
-
-
-
- private synchronized String geneterDataString(String dataformat) {
- SimpleDateFormat formatter = new SimpleDateFormat(dataformat);
- return formatter.format(new Date());
- }
-
- public static void main(String[] args) throws Exception {
- XmlBeanFactory context = new XmlBeanFactory(new ClassPathResource(
- "applicationContext.xml"));
- BasicDataSource dataSource = (BasicDataSource) context
- .getBean("dataSource");
- Map<String, String> map = new HashMap<String, String>();
- map.put("new",
- "select 'SP-' as prefix,'yyyyMMdd' as dataString,'000000' as startNumber from business union select 'SP-' as prefix,'yyyyMMdd' as dataString,'000000' as startNumber");
- PrimaryGenerater.newInstance(dataSource, map);
- for (int i = 0; i < 100; i++) {
- System.out.println(PrimaryGenerater.getInstance()
- .geneterNextNumberByKey("new"));
- }
- }
-
- }
- package com.wesley.framework.dao;
-
- public class PrimaryBean {
-
- private String prefix;
- private String dataString;
- private String startNumber;
- 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;
- }
-
- }
- package com.wesley.framework.dao.dbutils;
-
- import java.sql.Connection;
- import java.sql.SQLException;
- import java.util.List;
-
- import org.apache.commons.dbcp.BasicDataSource;
- import org.apache.commons.dbutils.BasicRowProcessor;
- import org.apache.commons.dbutils.QueryRunner;
- import org.apache.commons.dbutils.ResultSetHandler;
- import org.apache.commons.dbutils.handlers.BeanHandler;
- import org.apache.commons.dbutils.handlers.BeanListHandler;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.unitils.thirdparty.org.apache.commons.dbutils.DbUtils;
-
- public class DBHelper<T> {
- private static final Logger logger = LoggerFactory
- .getLogger(DBHelper.class);
-
- private BasicDataSource pool;
-
- private Class<T> beanClass = null;
-
- public DBHelper(BasicDataSource pool) {
- super();
- this.pool = pool;
- }
-
- public DBHelper(BasicDataSource pool, Class<T> beanClass) {
- super();
- this.pool = pool;
- this.beanClass = beanClass;
- }
-
-
-
-
-
-
-
- public T query(String sql) {
- Connection conn = this.getPoolConnection();
- if (conn == null || beanClass == null)
- return null;
- QueryRunner run = new QueryRunner();
- ResultSetHandler<T> h = new BeanHandler<T>(beanClass);
- T result = null;
- try {
- result = run.query(conn, sql, h);
- } catch (SQLException e) {
- logger.info("SQLException in [" + sql + "]");
- logger.error(e.getMessage());
- } finally {
- DbUtils.closeQuietly(conn);
- }
- return result;
- }
-
-
-
-
-
-
-
-
-
- public T query(String sql, Object... args) {
- Connection conn = this.getPoolConnection();
- if (conn == null || beanClass == null)
- return null;
- QueryRunner run = new QueryRunner();
- ResultSetHandler<T> h = new BeanHandler<T>(beanClass);
- T result = null;
- try {
- result = (T) run.query(conn, sql, h, args);
- } catch (SQLException e) {
- logger.info("SQLException in [" + sql + "]");
- logger.error(e.getMessage());
- } finally {
- DbUtils.closeQuietly(conn);
- }
- return result;
- }
-
-
-
-
-
-
-
- public List<T> queryRecords(String sql) {
- Connection conn = this.getPoolConnection();
- if (conn == null || beanClass == null)
- return null;
-
- ResultSetHandler<List<T>> h = new BeanListHandler<T>(beanClass,
- new BasicRowProcessor(new StrategyBeanProcessor(
- new HumpMatcher())));
- QueryRunner run = new QueryRunner();
- List<T> result = null;
- try {
- result = run.query(conn, sql, h);
- } catch (SQLException e) {
- logger.info("SQLException in [" + sql + "]");
- logger.error(e.getMessage());
- } finally {
- DbUtils.closeQuietly(conn);
- }
- return result;
- }
-
-
-
-
-
-
-
-
- public List<T> queryRecords(String sql, Object... args) {
- Connection conn = this.getPoolConnection();
- if (conn == null || beanClass == null)
- return null;
- QueryRunner run = new QueryRunner();
- ResultSetHandler<List<T>> h = new BeanListHandler<T>(beanClass,
- new BasicRowProcessor(new StrategyBeanProcessor(
- new HumpMatcher())));
- List<T> result = null;
-
- try {
- result = run.query(conn, sql, h, args);
- System.out.println(result.size());
- } catch (SQLException e) {
- logger.info("SQLException in [" + sql + "]");
- logger.error(e.getMessage());
- } finally {
- DbUtils.closeQuietly(conn);
- }
- return result;
- }
-
-
-
-
-
-
-
- public int update(String sql) {
- Connection conn = this.getPoolConnection();
- if (conn == null)
- return 0;
- QueryRunner run = new QueryRunner();
- int result = 0;
-
- try {
- result = run.update(conn, sql);
- } catch (SQLException e) {
- logger.info("SQLException in [" + sql + "]");
- logger.error(e.getMessage());
- } finally {
- DbUtils.closeQuietly(conn);
- }
- return result;
- }
-
-
-
-
-
-
-
-
- public int update(String sql, Object... args) {
- Connection conn = this.getPoolConnection();
- if (conn == null)
- return -1;
-
- QueryRunner run = new QueryRunner();
- int result = 0;
-
- try {
- result = run.update(conn, sql, args);
- } catch (SQLException e) {
- logger.info("SQLException in [" + sql + "]");
- logger.error(e.getMessage());
- } finally {
- DbUtils.closeQuietly(conn);
- }
- return result;
- }
-
-
-
-
-
-
-
- public void setBeanClass(Class<T> beanClass) {
- this.beanClass = beanClass;
- }
-
- public Connection getPoolConnection() {
- int x = 3;
- while (x > 0) {
- try {
- return pool.getConnection();
- } catch (SQLException e) {
- x--;
- logger.error(e.getMessage());
- }
- }
- return null;
- }
-
- public void dispose() {
- try {
- this.pool.close();
- } catch (SQLException e) {
- logger.error(e.getMessage());
- }
- }
- }
- <bean id="PrimaryGenerater" class="com.wesley.framework.dao.PrimaryGenerater"
- factory-method="newInstance">
- <constructor-arg index="0" ref="dataSource" />
- <constructor-arg index="1" >
- <map>
- <entry key="bsno">
- <value>select 'SP-' as prefix,'yyyyMMdd' as dataString,'000000' as
- startNumber union select null as prefix,null as dataString,null as
- startNumber from business
- </value>
- </entry>
- </map>
- </constructor-arg>
- </bean>
转载地址:http://sybvi.baihongyu.com/