org.velocityweb
Class JdbcDao

java.lang.Object
  extended byorg.velocityweb.BaseDao
      extended byorg.velocityweb.JdbcDao
Direct Known Subclasses:
JdbcPageDao

public abstract class JdbcDao
extends BaseDao

this class is abstract layer of JDBC actions, caller do not need to use connection or statement or result set this class is define as abstract, so don't new a object of this class

Author:
Jacklondon Chen

Field Summary
protected static java.util.Map tableColumnNamesMap
           
 
Constructor Summary
JdbcDao(BaseService srv)
          contructor
 
Method Summary
 boolean callStoredProcedure(java.lang.String storedProcedureName, java.lang.Object[] args)
          call stored procedure
protected  java.lang.String[] getTableColumnNames(java.lang.String tableName, java.sql.Connection con)
           
protected  boolean isSameColumn(java.lang.String databaseColumnName, java.lang.String beanPropertyName)
          check if database column same can mapping to Java bean property, compare ignore case, ignore "_", for example, USER_NAME in DB can be mapped to userName of Java bean
 java.lang.Object query(java.lang.String sql, java.lang.Object[] params, org.apache.commons.dbutils.ResultSetHandler rsh)
          query using user defined result set handler
 java.lang.Object[] queryArray(java.lang.String sql, java.lang.Object[] params)
          query data for only one line, return columns in array
 java.util.List queryArrayList(java.lang.String sql, java.lang.Object[] params)
          query data for multi-line, for each line data, all columns to make an array.
 java.lang.Object queryBean(java.lang.StringBuffer sql, java.util.List params, java.lang.Class type)
          query one single object
 java.lang.Object queryBean(java.lang.String sql, java.lang.Object[] params, java.lang.Class type)
          query one single object
 java.util.List queryBeanList(java.lang.StringBuffer sql, java.util.List params, java.lang.Class type)
          query data and return in a bean list
 java.util.List queryBeanList(java.lang.String sql, java.lang.Object[] params, java.lang.Class type)
          query data and return in a bean list
 java.util.List queryColumnList(java.lang.String sql, java.lang.Object[] params, int columnIndex)
          query data and get result for only one column
 java.util.List queryColumnList(java.lang.String sql, java.lang.Object[] params, java.lang.String columnName)
          query data and get result for only one column
 java.util.Map queryKeyed(java.lang.String sql, java.lang.Object[] params, int columnIndex)
          query data and return in map-map.
 java.util.Map queryKeyed(java.lang.String sql, java.lang.Object[] params, java.lang.String columnName)
          query data and return in map-map.
 java.util.Map queryMap(java.lang.String sql, java.lang.Object[] params)
          return data for one line, all columns put into a map, key is column name
 java.util.List queryMapList(java.lang.String sql, java.lang.Object[] params)
          query data and return in map list, each line is a map
 java.lang.Object queryScalar(java.lang.String sql, java.lang.Object[] params, int columnIndex)
          get one data for select column
 java.lang.Object queryScalar(java.lang.String sql, java.lang.Object[] params, java.lang.String columnName)
          get one data for select column
 int update(java.lang.StringBuffer sql, java.util.List params)
          exec insert/update or delete
 int update(java.lang.String sql, java.lang.Object[] params)
          exec insert/update or delete
 
Methods inherited from class org.velocityweb.BaseDao
getAppContext
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

tableColumnNamesMap

protected static java.util.Map tableColumnNamesMap
Constructor Detail

JdbcDao

public JdbcDao(BaseService srv)
contructor

Parameters:
srv -
Method Detail

query

public java.lang.Object query(java.lang.String sql,
                              java.lang.Object[] params,
                              org.apache.commons.dbutils.ResultSetHandler rsh)
query using user defined result set handler

Parameters:
sql -
params -
rsh -
Returns:
if find data, return it/them; if not, return null depends on handler
Throws:
JdbcSqlException

queryBean

public java.lang.Object queryBean(java.lang.String sql,
                                  java.lang.Object[] params,
                                  java.lang.Class type)
query one single object

Parameters:
sql -
params -
type -
Returns:
if find data, return it. or return null
Throws:
JdbcSqlException

queryBean

public java.lang.Object queryBean(java.lang.StringBuffer sql,
                                  java.util.List params,
                                  java.lang.Class type)
query one single object

Parameters:
sql -
params -
type -
Returns:
if find data, return it. or return null
Throws:
JdbcSqlException

queryBeanList

public java.util.List queryBeanList(java.lang.String sql,
                                    java.lang.Object[] params,
                                    java.lang.Class type)
query data and return in a bean list

Parameters:
sql -
params -
type -
Returns:
never return null
Throws:
JdbcSqlException

queryBeanList

public java.util.List queryBeanList(java.lang.StringBuffer sql,
                                    java.util.List params,
                                    java.lang.Class type)
query data and return in a bean list

Parameters:
sql -
params -
type -
Returns:
never return null
Throws:
JdbcSqlException

queryArray

public java.lang.Object[] queryArray(java.lang.String sql,
                                     java.lang.Object[] params)
query data for only one line, return columns in array

Parameters:
sql -
params -
Returns:
never return null
Throws:
JdbcSqlException

queryArrayList

public java.util.List queryArrayList(java.lang.String sql,
                                     java.lang.Object[] params)
query data for multi-line, for each line data, all columns to make an array. different line make a list

Parameters:
sql -
params -
Returns:
data in list
Throws:
JdbcSqlException

queryMap

public java.util.Map queryMap(java.lang.String sql,
                              java.lang.Object[] params)
return data for one line, all columns put into a map, key is column name

Parameters:
sql -
params -
Returns:
data in list
Throws:
JdbcSqlException

queryMapList

public java.util.List queryMapList(java.lang.String sql,
                                   java.lang.Object[] params)
query data and return in map list, each line is a map

Parameters:
sql -
params -
Returns:
data in list
Throws:
JdbcSqlException

queryColumnList

public java.util.List queryColumnList(java.lang.String sql,
                                      java.lang.Object[] params,
                                      int columnIndex)
query data and get result for only one column

Parameters:
sql -
params -
columnIndex -
Returns:
the data for selected column is return in a list
Throws:
JdbcSqlException

queryColumnList

public java.util.List queryColumnList(java.lang.String sql,
                                      java.lang.Object[] params,
                                      java.lang.String columnName)
query data and get result for only one column

Parameters:
sql -
params -
columnName -
Returns:
the data for selected column is return in a list
Throws:
JdbcSqlException

queryKeyed

public java.util.Map queryKeyed(java.lang.String sql,
                                java.lang.Object[] params,
                                int columnIndex)
query data and return in map-map. first map key is selected column data,second map is value of first map. for second map, key is column name, value is data.

Parameters:
sql -
params -
columnIndex -
Returns:
data in list
Throws:
JdbcSqlException

queryKeyed

public java.util.Map queryKeyed(java.lang.String sql,
                                java.lang.Object[] params,
                                java.lang.String columnName)
query data and return in map-map. first map key is selected column data,second map is value of first map. for second map, key is column name, value is data.

Parameters:
sql -
params -
columnName -
Returns:
data in list
Throws:
JdbcSqlException

queryScalar

public java.lang.Object queryScalar(java.lang.String sql,
                                    java.lang.Object[] params,
                                    int columnIndex)
get one data for select column

Parameters:
sql -
params -
columnIndex -
Returns:
data in list
Throws:
JdbcSqlException

queryScalar

public java.lang.Object queryScalar(java.lang.String sql,
                                    java.lang.Object[] params,
                                    java.lang.String columnName)
get one data for select column

Parameters:
sql -
params -
columnName -
Returns:
data in list
Throws:
JdbcSqlException

update

public int update(java.lang.String sql,
                  java.lang.Object[] params)
exec insert/update or delete

Parameters:
sql -
params -
Returns:
updated data count
Throws:
JdbcSqlException

update

public int update(java.lang.StringBuffer sql,
                  java.util.List params)
exec insert/update or delete

Parameters:
sql -
params -
Returns:
updated data count
Throws:
JdbcSqlException

callStoredProcedure

public boolean callStoredProcedure(java.lang.String storedProcedureName,
                                   java.lang.Object[] args)
call stored procedure

Parameters:
storedProcedureName - stored procedure name
Returns:
true if the first result is a ResultSet object; false if the first result is an update count or there is no result
Throws:
JdbcSqlException

getTableColumnNames

protected java.lang.String[] getTableColumnNames(java.lang.String tableName,
                                                 java.sql.Connection con)

isSameColumn

protected boolean isSameColumn(java.lang.String databaseColumnName,
                               java.lang.String beanPropertyName)
check if database column same can mapping to Java bean property, compare ignore case, ignore "_", for example, USER_NAME in DB can be mapped to userName of Java bean

Parameters:
databaseColumnName - one database column name
beanPropertyName - one Java bean property name
Returns:
if allowed to mapping between database column name and java bean property name, return true