Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package com.ecfront.easybi.dbutils.exchange;
  
  import org.slf4j.Logger;
  
  import java.util.HashMap;
  import java.util.List;
 import java.util.Map;

并发版本的数据操作类

 
 public class ConcurrentDB {
 
       public ConcurrentDB(DB db){
           this.=db;
       }

    
DDL操作

Parameters:
ddls DDL语句
 
     public void ddls(final List<Stringddlsthrows SQLException{
         final CountDownLatch signal = new CountDownLatch(ddls.size());
         for (int i = 0; i < ddls.size(); i++) {
             final int finalI = i;
             .execute(new Runnable() {
                 @Override
                 public void run() {
                     try {
                         .ddl(ddls.get(finalI));
                     } catch (SQLException e) {
                         .warn("ddl execute error.."e);
                     } finally {
                         signal.countDown();
                     }
                 }
             });
         }
         try {
             signal.await();
         } catch (InterruptedException e) {
             .warn("MultiThread Interrupted."e);
         }
     }

    
获取多个对象

Parameters:
sqls SQLs
clazz 对象类
Returns:
java对象集合
 
     public <E> Map<String,E> getObjects(final Map<String,Stringsqlsfinal Class<E> clazzthrows SQLExceptionExecutionExceptionInterruptedException {
         return getObjects(sqls,null,clazz);
     }

    
获取多个对象

Parameters:
sqls SQLs
params 参数
clazz 对象类
Returns:
java对象集合
 
     public <E> Map<String, E> getObjects(final Map<StringStringsqlsfinal Object[] params,final Class<E> clazzthrows SQLException {
         final Map<String, E> result = new HashMap<String,E>();
         final CountDownLatch signal = new CountDownLatch(sqls.size());
         for(final Map.Entry<String,Stringentry:sqls.entrySet()){
             .execute(new Runnable() {
                 @Override
                 public void run() {
                     try {
                         result.put(entry.getKey(), .getObject(entry.getValue(), paramsclazz));
                     } catch (SQLException e) {
                         .warn("getObjects execute error.."e);
                     } finally {
                         signal.countDown();
                     }
                 }
             });
         }
         try {
             signal.await();
         } catch (InterruptedException e) {
             .warn("MultiThread Interrupted."e);
         }
         return result;
     }

    
获取多个对象集合

Parameters:
sqls SQLs
clazz 对象类
Returns:
java对象集合
    public <E> Map<StringList<E>> findObjects(final Map<StringStringsqls,final Class<E> clazzthrows SQLException {
        return findObjects(sqlsnullclazz);
    }

    
获取多个对象集合

Parameters:
sqls SQLs
params 参数
clazz 对象类
Returns:
java对象集合
    public <E> Map<StringList<E>> findObjects(final Map<StringStringsqlsfinal Object[] paramsfinal Class<E> clazzthrows SQLException {
        final Map<StringList<E>> result = new HashMap<StringList<E>>();
        final CountDownLatch signal = new CountDownLatch(sqls.size());
        for (final Map.Entry<StringStringentry : sqls.entrySet()) {
            .execute(new Runnable() {
                @Override
                public void run() {
                    try {
                        result.put(entry.getKey(), .findObjects(entry.getValue(), paramsclazz));
                    } catch (SQLException e) {
                        .warn("findObjects execute error.."e);
                    } finally {
                        signal.countDown();
                    }
                }
            });
        }
        try {
            signal.await();
        } catch (InterruptedException e) {
            .warn("MultiThread Interrupted."e);
        }
        return result;
    }

    
获取多个对象集合(带分页)

Parameters:
sqls SQLs
pageNumber 页码(从1开始)
pageSize 每页条数
clazz 对象类
Returns:
java对象集合(带分页)
    public <E> Map<StringPage<E>> findObjects(final Map<StringStringsqls,long pageNumberlong pageSizeClass<E> clazzthrows SQLException {
        return findObjects(sqlsnullpageNumberpageSizeclazz);
    }

    
获取多个对象集合(带分页)

Parameters:
sqls SQLs
params 参数
pageNumber 页码(从1开始)
pageSize 每页条数
clazz 对象类
Returns:
java对象集合(带分页)
    public <E> Map<StringPage<E>> findObjects(final Map<StringStringsqls,final Object[] params,final long pageNumberfinal long pageSize,final Class<E> clazzthrows SQLException {
        final Map<StringPage<E>> result = new HashMap<StringPage<E>>();
        final CountDownLatch signal = new CountDownLatch(sqls.size());
        for (final Map.Entry<StringStringentry : sqls.entrySet()) {
            .execute(new Runnable() {
                @Override
                public void run() {
                    try {
                        result.put(entry.getKey(), .findObjects(entry.getValue(), paramspageNumberpageSizeclazz));
                    } catch (SQLException e) {
                        .warn("findObjects execute error.."e);
                    } finally {
                        signal.countDown();
                    }
                }
            });
        }
        try {
            signal.await();
        } catch (InterruptedException e) {
            .warn("MultiThread Interrupted."e);
        }
        return result;
    }

    
获取单条记录集合

Parameters:
sqls SQLs
Returns:
单条记录集合
    public Map<StringMap<StringObject>> get(final Map<StringStringsqlsthrows SQLException {
        return get(sqlsnull);
    }

    
获取单条记录集合

Parameters:
sqls SQLs
params 参数
Returns:
单条记录集合
    public Map<StringMap<StringObject>> get(final Map<StringStringsqls,final Object[] paramsthrows SQLException {
        final Map<StringMap<StringObject>> result = new HashMap<StringMap<StringObject>>();
        final CountDownLatch signal = new CountDownLatch(sqls.size());
        for (final Map.Entry<StringStringentry : sqls.entrySet()) {
            .execute(new Runnable() {
                @Override
                public void run() {
                    try {
                        result.put(entry.getKey(), .get(entry.getValue(), params));
                    } catch (Exception e) {
                        .warn("get execute error.."e);
                    }  finally {
                        signal.countDown();
                    }
                }
            });
        }
        try {
            signal.await();
        } catch (InterruptedException e) {
            .warn("MultiThread Interrupted."e);
        }
        return result;
    }


    
获取多条记录集合(带分页)

Parameters:
sqls SQLs
Returns:
多条记录集合(带分页)
    public Map<StringList<Map<StringObject>>> find(final Map<StringStringsqlsthrows SQLException {
        return find(sqlsnull);
    }

    
获取多条记录集合(带分页)

Parameters:
sqls SQLs
params 参数
Returns:
多条记录集合(带分页)
    public Map<StringList<Map<StringObject>>> find(final Map<StringStringsqls,final Object[] paramsthrows SQLException {
        final Map<StringList<Map<StringObject>>> result = new HashMap<StringList<Map<StringObject>>>();
        final CountDownLatch signal = new CountDownLatch(sqls.size());
        for (final Map.Entry<StringStringentry : sqls.entrySet()) {
            .execute(new Runnable() {
                @Override
                public void run() {
                    try {
                        result.put(entry.getKey(), .find(entry.getValue(), params));
                    } catch (SQLException e) {
                        .warn("find execute error.."e);
                    } finally {
                        signal.countDown();
                    }
                }
            });
        }
        try {
            signal.await();
        } catch (InterruptedException e) {
            .warn("MultiThread Interrupted."e);
        }
        return result;
    }

    
获取多条记录集合(带分页)

Parameters:
sqls SQLs
pageNumber 页码(从1开始)
pageSize 每页条数
Returns:
多条记录集合(带分页)
    public Map<StringPage<Map<StringObject>>> find(final Map<StringStringsqlsint pageNumberint pageSizethrows SQLException {
        return find(sqlsnullpageNumberpageSize);
    }


    
获取多条记录集合(带分页)

Parameters:
sqls SQLs
params 参数
pageNumber 页码(从1开始)
pageSize 每页条数
Returns:
多条记录集合(带分页)
    public Map<StringPage<Map<StringObject>>> find(final Map<StringStringsqls,final Object[] paramsfinal int pageNumberfinal int pageSizethrows SQLException {
        final Map<StringPage<Map<StringObject>>> result = new HashMap<StringPage<Map<StringObject>>>();
        final CountDownLatch signal = new CountDownLatch(sqls.size());
        for (final Map.Entry<StringStringentry : sqls.entrySet()) {
            .execute(new Runnable() {
                @Override
                public void run() {
                    try {
                        result.put(entry.getKey(), .find(entry.getValue(), params,pageNumber,pageSize));
                    } catch (SQLException e) {
                        .warn("find execute error.."e);
                    } finally {
                        signal.countDown();
                    }
                }
            });
        }
        try {
            signal.await();
        } catch (InterruptedException e) {
            .warn("MultiThread Interrupted."e);
        }
        return result;
    }

    
获取记录数集合

Parameters:
sqls SQLs
Returns:
记录数集合
    public Map<StringLongcount(final Map<StringStringsqlsthrows SQLException {
        return count(sqlsnull);
    }

    
获取记录数集合

Parameters:
sqls SQLs
params 参数
Returns:
记录数集合
    public Map<StringLongcount(final Map<StringStringsqls,final Object[] paramsthrows SQLException {
        final Map<StringLongresult = new HashMap<StringLong>();
        final CountDownLatch signal = new CountDownLatch(sqls.size());
        for (final Map.Entry<StringStringentry : sqls.entrySet()) {
            .execute(new Runnable() {
                @Override
                public void run() {
                    try {
                        result.put(entry.getKey(), .count(entry.getValue(), params));
                    } catch (SQLException e) {
                        .warn("count execute error.."e);
                    } finally {
                        signal.countDown();
                    }
                }
            });
        }
        try {
            signal.await();
        } catch (InterruptedException e) {
            .warn("MultiThread Interrupted."e);
        }
        return result;
    }

    
更新记录集合

Parameters:
sqls SQLs
    public Map<StringIntegerupdate(final Map<StringStringsqlsthrows SQLException {
        return update(sqlsnull);
    }

    
更新记录集合

Parameters:
sqls SQLs
params 参数
    public Map<StringIntegerupdate(final Map<StringStringsqls,final Object[] paramsthrows SQLException {
        final Map<StringIntegerresult = new HashMap<StringInteger>();
        final CountDownLatch signal = new CountDownLatch(sqls.size());
        for (final Map.Entry<StringStringentry : sqls.entrySet()) {
            .execute(new Runnable() {
                @Override
                public void run() {
                    try {
                        result.put(entry.getKey(), .update(entry.getValue(), params));
                    } catch (SQLException e) {
                        .warn("update execute error.."e);
                    } finally {
                        signal.countDown();
                    }
                }
            });
        }
        try {
            signal.await();
        } catch (InterruptedException e) {
            .warn("MultiThread Interrupted."e);
        }
        return result;
    }

    
批量更新记录集合

Parameters:
sqls SQLs
params 参数
    public Map<Stringint[]> batch(final Map<StringStringsqls,final Object[][] paramsthrows SQLException {
        final Map<Stringint[]> result = new HashMap<Stringint[]>();
        final CountDownLatch signal = new CountDownLatch(sqls.size());
        for (final Map.Entry<StringStringentry : sqls.entrySet()) {
            .execute(new Runnable() {
                @Override
                public void run() {
                    try {
                        result.put(entry.getKey(), .batch(entry.getValue(), params));
                    } catch (SQLException e) {
                        .warn("batch execute error.."e);
                    } finally {
                        signal.countDown();
                    }
                }
            });
        }
        try {
            signal.await();
        } catch (InterruptedException e) {
            .warn("MultiThread Interrupted."e);
        }
        return result;
    }
    private DB db;
    private static ExecutorService  executorService= Executors.newCachedThreadPool();
    private static final Logger logger = LoggerFactory.getLogger(ConcurrentDB.class);
New to GrepCode? Check out our FAQ X