package com.lizard.fastdb.jdbc; import java.io.Serializable; import java.sql.Connection; import java.sql.ResultSet; import java.sql.Statement; import java.util.List; import java.util.Map; import com.lizard.fastdb.datasource.DataSource; /** * fastDB JDBC 操作接口 定义并封装了一些常用的 JDBC 操作接口 * * @author SHEN.GANG */ public interface JdbcHandler extends Serializable { /** * 保存一个使用了 fastDB Annotation 的对象到数据库 * <p> * fastDB Annotation Example: (注:为了能让@在javadoc中显示,故在将@改为_@,在实际使用时请还原为@) * <p> * <hr> * <blockquote> * * <pre> * _@Table(name = "fastdb_user") * public class User * { * _@Column(name="id", primaryKey=true, generatorType=GeneratorType.AUTO_INCREMENT) * private long id; * * _@Column(name="username") * private String username; * * _@Column(name="real_name") * private String realname; * * _@Column(name="age") * private int age; * * // 下面是构造方法以及属性的setter/getter方法 * ...... * } * * User user = new User(); * user.setUsername("test"); * user.setRealname("test_realname"); * user.setAge(20); * * boolean res = jdbcHandler.save( user ); * </pre> * * </blockquote> * <hr> * * @param bean 使用了 fastDB annotation 的对象 * @return 保存结果 */ public boolean save(Object bean); /** * 更新一个使用了 fastDB Annotation 的对象到数据库 * <hr> * <blockquote> * User Annotation 参见 {@link #save(Object)} 的User样例 * <pre> * User user = ...; * user.setUsername("test_007"); * user.setAge(25); * * boolean res = jdbcHandler.update( user ); * </pre> * </blockquote> * <hr> * * @param bean 使用了 fastDB annotation 的对象 * @return 更新结果 */ public boolean update(Object bean); /** * 更新一个使用了 fastDB Annotation 对象的部分属性到数据库 * <hr> * <blockquote> * User Annotation 参见 {@link #save(Object)} 的User样例 * <pre> * User user = ...; * user.setUsername("test_007"); * user.setRealname("test_2012"); * user.setAge(30); * * ## 只更新User Bean的 realname 和 age 2个属性到数据库 * boolean res = jdbcHandler.update( user, new String[]{"realname", "age"} ); * </pre> * </blockquote> * <hr> * * @param bean 使用了 fastDB annotation 的对象 * @param updatedFields 需要更新的字段(指Bean的属性,而不是@Column的name属性值)集合,如果为null或空,则更新Bean的全部属性。 * @return 更新成功返回 true,失败返回 false */ public boolean update(Object bean, String[] updatedFields); /** * 执行一个INSERT SQL语句,不可以执行 UPDATE, DELETE 等语句,<br> * 如果要执行 UPDATE, DELETE 等语句,使用 {@link #execute(String)} 替代。 * <p> * <b>注意:</b>该方法仅适用于那些支持 <b>auto_increment</b> 主键生成方式的数据库!例如:MySQL 等 * </p> * * @param sql 要执行的 INSERT SQL 语句 * @return 返回生成的主键值,如果失败,返回 -1 */ public long saveForGeneratedKey(String sql); /** * 执行一个INSERT SQL语句,不可以执行 UPDATE, DELETE 等语句,<br> * 如果要执行 UPDATE, DELETE 等语句,使用 {@link #execute(String, Object...)} 替代。 * <p> * <b>注意:</b>该方法仅适用于那些支持 <b>auto_increment</b> 主键生成方式的数据库!例如:MySQL 等 * </p> * * @param sql 要执行的 INSERT SQL 语句 * @param paramValues INSERT 语句中要替换的参数值 * @return 返回生成的主键值,如果失败,返回 -1 */ public long saveForGeneratedKey(String sql, Object... paramValues); /** * 执行一个INSERT SQL语句,不可以执行 UPDATE, DELETE 等语句,<br> * 如果要执行 UPDATE, DELETE 等语句,使用 {@link #execute(String, Map)} 替代。 * <p> * <b>注意:</b>该方法仅适用于那些支持 <b>auto_increment</b> 主键生成方式的数据库!例如:MySQL 等 * </p> * * @param namedSql 要执行的 INSERT 命名参数SQL 语句 * @param paramValues 命名参数值 * @return 返回生成的主键值,如果失败,返回 -1 */ public long saveForGeneratedKey(String namedSql, Map<String, Object> paramValues); /** * 执行 INSERT, UPDATE, DELETE, CREATE, DROP 等语句。 * * @param sql 要执行的DML和DDL类型SQL语句 * @return true -- 执行成功,false -- 执行失败 */ public boolean execute(String sql); /** * 执行 INSERT, UPDATE, DELETE, CREATE, DROP 等语句。 * * @param sql 要执行的DML和DDL类型SQL语句 * @param paramValues SQL语句中要替换的参数值 * @return true -- 执行成功,false -- 执行失败 */ public boolean execute(String sql, Object... paramValues); /** * 执行 INSERT, UPDATE, DELETE, CREATE, DROP 等语句。 * * @param namedSql 使用命名参数的SQL语句 * @param paramValues 命名参数值 * @return true -- 执行成功,false -- 执行失败 */ public boolean execute(String namedSql, Map<String, Object> paramValues); /** * 根据外部数据库连接对象Connection执行execute操作。 * <p> * <font color="#ff0000"><b>注意:</b>如果使用外部Connection,在使用完毕后一定要<b>关闭</b>! 可以调用 {@link #closeConnection(Connection)}关闭。</font> * </p> * * @param conn 外部数据库连接对象 * @param sql 要执行的DML和DDL类型SQL语句 * @param paramValues SQL语句中要替换的参数值 * @return true -- 执行成功,false -- 执行失败 */ public boolean execute(Connection conn, String sql, Object... paramValues); /** * 根据外部数据库连接对象Connection执行execute操作。 * <p> * <font color="#ff0000"><b>注意:</b>如果使用外部Connection,在使用完毕后一定要<b>关闭</b>! 可以调用 {@link #closeConnection(Connection)}关闭。</font> * </p> * * @param conn 外部数据库连接对象 * @param namedSql 使用命名参数的SQL语句 * @param paramValues 命名参数值 * @return true -- 执行成功,false -- 执行失败 */ public boolean execute(Connection conn, String namedSql, Map<String, Object> paramValues); /** * 执行批量的 INSERT, UPDATE, DELETE 等DDL语句。 * <p> * 该批量操作默认不分批执行,不回滚操作。 * <p> * 如果想要设置分批执行,则进行如下设置即可: * <p> * <hr> * <blockquote> * * <pre> * JdbcHandler jdbc = DBFactory.create(alias); * // 设置分批大小 setBatchSize( int batchSize ),例如:每100条SQL命令执行一次 * jdbc.setBatchSize(100); * // 调用批量操作接口 * jdbc.batchUpdate( ..... ); * </pre> * * </blockquote> * <hr> * <p> * 如果要设置回滚操作,请调用:batchUpdate( String[], boolean )方法 * * @param sqls 批量静态SQL语句数组 * @return BatchUpdateResult 批量操作结果信息 * <p> * 包含:success, errorBatchs, batchRows 信息 * </p> * <ul> * <li>success - 如果批量操作<b>全部</b>执行成功,则为 true,否则 false。</li> * <li>errorBatchs - int[]数组,存储执行失败的分批批次信息,例如:[2,4]表示分批执行中第2,4批次执行失败;如果全部执行成功,errorBatchs 为[]。</li> * <li>batchRows - 批量处理最终返回的计数数组,即:Statement.executeBatch()返回的int[]信息内容</li> * </ul> */ public BatchUpdateResult batchUpdate(String[] sqls); /** * 执行批量的 INSERT, UPDATE, DELETE 等DDL语句。 * <p> * 该批量操作默认不分批执行,不回滚操作。 * <p> * 如果想要设置分批执行,则进行如下设置即可: * <p> * <hr> * <blockquote> * * <pre> * JdbcHandler jdbc = DBFactory.create(alias); * // 设置分批大小 setBatchSize( int batchSize ),例如:每100条SQL命令执行一次 * jdbc.setBatchSize(100); * // 调用批量操作接口 * jdbc.batchUpdate( ..... ); * </pre> * * </blockquote> * <hr> * * @param sqls 批量SQL语句数组 * @param rollback 事务回滚, true -- 设置事务回滚,false -- 不设置事务回滚 * <ul> * <li>未设置分批操作 -- 回滚所有执行的事务</li> * <li>设置了分批操作 -- 回滚执行失败的批次的所有事务</li> * </ul> * <b>需要注意的是:如果当前操作在事务管理器中,rollback将在内部被设为true,而忽略参数中该值的设置</b> * @return BatchUpdateResult 批量操作结果信息 * <p> * 包含:success, errorBatchs, batchRows 信息 * </p> * <ul> * <li>success - 如果批量操作<b>全部</b>执行成功,则为 true,否则 false。</li> * <li>errorBatchs - int[]数组,存储执行失败的分批批次信息,例如:[2,4]表示分批执行中第2,4批次执行失败;如果全部执行成功,errorBatchs 为[]。</li> * <li>batchRows - 批量处理最终返回的计数数组,即:Statement.executeBatch()返回的int[]信息内容。</li> * </ul> */ public BatchUpdateResult batchUpdate(String[] sqls, boolean rollback); /** * 执行批量的 INSERT, UPDATE, DELETE 等DDL语句。 * <p> * 该批量操作默认不分批执行,不回滚操作。 * <p> * 如果想要设置分批执行,则进行如下设置即可: * <p> * <hr> * <blockquote> * * <pre> * JdbcHandler jdbc = DBFactory.create(alias); * // 设置分批大小 setBatchSize( int batchSize ),例如:每100条SQL命令执行一次 * jdbc.setBatchSize(100); * // 调用批量操作接口 * jdbc.batchUpdate( ..... ); * </pre> * * </blockquote> * <hr> * <p> * 如果要设置回滚操作,请调用:batchUpdate( String, Object[][], boolean )方法 * * @param sql 带?占位符的预编译sql语句,例如:INSERT INTO tableName VALUES(?, ?, ?, ...) * @param paramValues 预编译sql语句的参数 * @return BatchUpdateResult 批量操作结果信息 * <p> * 包含:success, errorBatchs, batchRows 信息 * </p> * <ul> * <li>success - 如果批量操作<b>全部</b>执行成功,则为 true,否则 false。</li> * <li>errorBatchs - int[]数组,存储执行失败的分批批次信息,例如:[2,4]表示分批执行中第2,4批次执行失败;如果全部执行成功,errorBatchs 为[]。</li> * <li>batchRows - 批量处理最终返回的计数数组,即:Statement.executeBatch()返回的int[]信息内容</li> * </ul> */ public BatchUpdateResult batchUpdate(String sql, Object[][] paramValues); /** * 执行批量的 INSERT, UPDATE, DELETE 等DDL语句。 * <p> * 该批量操作默认不分批执行,不回滚操作。 * <p> * 如果想要设置分批执行,则进行如下设置即可: * <p> * <hr> * <blockquote> * * <pre> * JdbcHandler jdbc = DBFactory.create(alias); * // 设置分批大小 setBatchSize( int batchSize ),例如:每100条SQL命令执行一次 * jdbc.setBatchSize(100); * // 调用批量操作接口 * jdbc.batchUpdate( ..... ); * </pre> * * </blockquote> * <hr> * * @param sql 带?占位符的预编译sql语句,例如:INSERT INTO tableName VALUES(?, ?, ?, ...) * @param paramValues 预编译sql语句的参数 * @param rollback 事务回滚, true -- 设置事务回滚,false -- 不设置事务回滚 * <ul> * <li>未设置分批操作 -- 回滚所有执行的事务</li> * <li>设置了分批操作 -- 回滚执行失败的批次的所有事务</li> * </ul> * <b>需要注意的是:如果当前操作在事务管理器中,rollback将在内部被设为true,而忽略参数中该值的设置</b> * @return BatchUpdateResult 批量操作结果信息 * <p> * 包含:success, errorBatchs, batchRows 信息 * <ul> * <li>success - 如果批量操作<b>全部</b>执行成功,则为 true,否则 false。</li> * <li>errorBatchs - int[]数组,存储执行失败的分批批次信息,例如:[2,4]表示分批执行中第2,4批次执行失败;如果全部执行成功,errorBatchs 为[]。</li> * <li>batchRows - 批量处理最终返回的计数数组,即:Statement.executeBatch()返回的int[]信息内容。</li> * </ul> */ public BatchUpdateResult batchUpdate(String sql, Object[][] paramValues, boolean rollback); /** * 执行一个带参数的SQL语句,并通过自定义实现RowCallbackHandler接口返回对象 * <p> * Example: * </p> * <p> * <hr> * <blockquote> * * <pre> * JdbcHandler jdbc = DBFactory.create(...); * * // 查询单一对象,自定义返回HashMap * String sql = " SELECT * FROM tableName WHERE id = ? "; * Map<String, String> map = jdbc.query( sql, new RowCallbackHandler<Map<String,String>>(){ * // 实现 handle 接口 * public Object handle(ResultSet rs) throws SQLException { * Map<String, String> map = new HashMap<String, String>(); * if (rs.next()) { * ResultSetMetaData rsmd = rs.getMetaData(); * int columnCount = rsmd.getColumnCount(); * for (int i = 1; i <= columnCount; i++) { * map.put(rsmd.getColumnLabel(i) ,rs.getString(i)); * } * } * if (rs != null){ * rs.close(); * rs = null; * } * return map; * } * }, 1); * </pre> * * </blockquote> * <p> * <hr> * <blockquote> * * <pre> * // 查询结果集,并自定义返回List<Map<String, String>> * String sql2 = "SELECT * FROM table1"; * List<Map<String, String>> list = dbm.query(sql2, new RowCallbackHandler<List<Map<String, String>>>() * { * // 实现 handle 接口 * public Object handle(ResultSet rs) throws SQLException { * List<Map<String, String>> _list = new ArrayList<Map<String, String>>(); * Map<String, String> map = null; * while (rs.next()){ * map = new HashMap<String, String>(); * ResultSetMetaData rsmd = rs.getMetaData(); * int columnCount = rsmd.getColumnCount(); * for (int i = 1; i <= columnCount; i++) { * map.put(rsmd.getColumnLabel(i), rs.getString(i)); * } * _list.add(map); * } * * if (rs != null) { * rs.close(); * rs = null; * } * * return _list; * } * }, new Object[]{}); * </pre> * * </blockquote> * <hr> * * @param <T> RowCallbackHandler转换返回的对象类型 * @param sql 要执行的SQL语句 * @param rch RowCallbackHandler要转换ResultSet结果集接口的实现类 * @param paramValues SQL语句中要替换的参数值 * @return RowCallbackHandler转换返回的对象类型 */ public <T> T query(String sql, RowCallbackHandler<T> rch, Object... paramValues); /** * 执行一个带参数的SQL语句,并通过自定义实现RowCallbackHandler接口返回对象 * * @param <T> RowCallbackHandler转换返回的对象类型 * @param namedSql 使用了命名参数的SQL语句(Example: SELECT state FROM table WHERE id =:id) * @param rch RowCallbackHandler要转换ResultSet结果集接口的实现类 * @param paramValues 命名参数值 * @return RowCallbackHandler转换返回的对象类型 */ public <T> T query(String namedSql, RowCallbackHandler<T> rch, Map<String, Object> paramValues); /** * 查询单一对象,并转换成自定义JavaBean对象 * * @param <T> 泛型,接受自定义JavaBean.class * @param beanClass 自定义JavaBean.class * @param sql 要执行的查询语句 * @return 封装数据后的单一JavaBean对象 */ public <T> T queryForBean(Class<T> beanClass, String sql); /** * 查询单一对象,并转换成自定义JavaBean对象 * * @param <T> 泛型,接受自定义JavaBean.class * @param beanClass 自定义JavaBean.class * @param sql 要执行的查询语句 * @param paramValues SQL语句中的变量值 * @return 封装数据后的单一JavaBean对象 */ public <T> T queryForBean(Class<T> beanClass, String sql, Object... paramValues); /** * 查询单一对象,并转换成自定义JavaBean对象 * * @param <T> 泛型,接受自定义JavaBean.class * @param beanClass 自定义JavaBean.class * @param namedSql 使用了命名参数的SQL语句(Example: SELECT state FROM table WHERE id =:id) * @param paramValues 命名参数值 * @return 封装数据后的单一JavaBean对象 */ public <T> T queryForBean(Class<T> beanClass, String namedSql, Map<String, Object> paramValues); /** * 查询单一数据对象,以超类Object返回 * * @param sql 要执行的查询语句 * @return 单一Object数据对象 */ public Object queryForObject(String sql); /** * 查询单一数据对象,以超类Object返回 * * @param sql 要执行的查询语句 * @param paramValues 查询语句中的变量值 * @return 单一Object数据对象 */ public Object queryForObject(String sql, Object... paramValues); /** * 查询单一数据对象,以超类Object返回 * * @param namedSql 使用了命名参数的SQL语句(Example: SELECT state FROM table WHERE id =:id) * @param paramValues 命名参数值 * @return 单一Object数据对象 */ public Object queryForObject(String namedSql, Map<String, Object> paramValues); /** * 查询单一数据对象,并封装成Map<String, Object> 返回 * * @param sql 要执行的查询语句 * @return 单一Map<String, Object> 数据对象 */ public Map<String, Object> queryForMap(String sql); /** * 查询单一数据对象,并封装成Map<String, Object> 返回 * * @param sql 要执行的查询语句 * @param paramValues 查询语句中的变量值 * @return 单一Map<String, Object> 数据对象 */ public Map<String, Object> queryForMap(String sql, Object... paramValues); /** * 查询单一数据对象,并封装成Map<String, Object> 返回 * * @param namedSql 使用了命名参数的SQL语句(Example: SELECT state FROM table WHERE id =:id) * @param paramValues 命名参数值 * @return 单一Map<String, Object> 数据对象 */ public Map<String, Object> queryForMap(String namedSql, Map<String, Object> paramValues); /** * 查询单一数据类型 Integer * * @param sql 要执行的查询语句 * @return Integer数据类型,如果查询不到值,则返回 Null */ public Integer queryForInteger(String sql); /** * 查询单一数据类型 Integer * * @param sql 要执行的查询语句 * @param paramValues SQL语句中的变量值 * @return Integer数据类型,如果查询不到值,则返回 Null */ public Integer queryForInteger(String sql, Object... paramValues); /** * 查询单一数据类型 Integer * * @param namedSql 使用了命名参数的SQL语句(Example: SELECT state FROM table WHERE id =:id) * @param paramValues 命名参数值 * @return Integer数据类型,如果查询不到值,则返回 Null */ public Integer queryForInteger(String namedSql, Map<String, Object> paramValues); /** * 查询单一数据类型 Long * * @param sql 要执行的查询语句 * @return Long数据类型,如果查询不到值,则返回 0 */ public Long queryForLong(String sql); /** * 查询单一数据类型 Long * * @param sql 要执行的查询语句 * @param paramValues SQL语句中的变量值 * @return Long数据类型,如果查询不到值,则返回 0 */ public Long queryForLong(String sql, Object... paramValues); /** * 查询单一数据类型 Long * * @param namedSql 使用了命名参数的SQL语句(Example: SELECT state FROM table WHERE id =:id) * @param paramValues 命名参数值 * @return Long数据类型,如果查询不到值,则返回 0 */ public Long queryForLong(String namedSql, Map<String, Object> paramValues); /** * 查询数据结果集,以List集合存储自定义泛型类型返回 * * @param <T> 自定义泛型类型 * @param beanClass 自定义JavaBean.class * @param sql 要执行的查询语句 * @return 存储自定义泛型类型的结果集List */ public <T> List<T> queryForList(Class<T> beanClass, String sql); /** * 查询数据结果集,以List集合存储自定义泛型类型返回 * * @param <T> 自定义泛型类型 * @param beanClass 自定义JavaBean.class * @param sql 要执行的查询语句 * @param paramValues 查询语句中的变量值 * @return 存储自定义泛型类型的结果集List */ public <T> List<T> queryForList(Class<T> beanClass, String sql, Object... paramValues); /** * 查询数据结果集,以List集合存储自定义泛型类型返回 * * @param <T> 自定义泛型类型 * @param beanClass 自定义JavaBean.class * @param namedSql 使用了命名参数的SQL语句(Example: SELECT * FROM table WHERE id >:id) * @param paramValues 命名参数值 * @return 存储自定义泛型类型的结果集List */ public <T> List<T> queryForList(Class<T> beanClass, String namedSql, Map<String, Object> paramValues); /** * 查询支持分页数据结果集,以List集合存储自定义泛型类型返回 * * @param <T> 自定义泛型类型 * @param beanClass 自定义JavaBean.class * @param sql 要执行的查询语句 * @param page 页码 * @param pagesize 分页结果集大小 * @param paramValues 查询语句中的变量值 * @return 分页后存储自定义泛型类型的结果集List */ public <T> List<T> queryForPageList(Class<T> beanClass, String sql, int page, int pagesize, Object... paramValues); /** * 查询支持分页数据结果集,以List集合存储自定义泛型类型返回 * * @param <T> 自定义泛型类型 * @param beanClass 自定义JavaBean.class * @param namedSql 使用了命名参数的SQL语句(Example: SELECT * FROM table WHERE id >:id) * @param page 页码 * @param pagesize 分页结果集大小 * @param paramValues 命名参数值 * @return 分页后存储自定义泛型类型的结果集List */ public <T> List<T> queryForPageList(Class<T> beanClass, String namedSql, int page, int pagesize, Map<String, Object> paramValues); /** * 查询数据结果集,以List集合存储Map<String, Object>类型返回 * * @param sql 要执行的查询语句 * @return 存储Map<String, Object>类型的结果集List */ public List<Map<String, Object>> queryForList(String sql); /** * 查询数据结果集,以List集合存储Map<String, Object>类型返回 * * @param sql 要执行的查询语句 * @param paramValues 查询语句中的变量值 * @return 存储Map<String, Object>类型的结果集List */ public List<Map<String, Object>> queryForList(String sql, Object... paramValues); /** * 查询数据结果集,以List集合存储Map<String, Object>类型返回 * * @param namedSql 使用了命名参数的SQL语句(Example: SELECT * FROM table WHERE id >:id) * @param paramValues 命名参数值 * @return 存储Map<String, Object>类型的结果集List */ public List<Map<String, Object>> queryForList(String namedSql, Map<String, Object> paramValues); /** * 查询支持分页数据结果集,以List集合存储Map<String, Object>类型返回 * * @param sql 要执行的查询语句 * @param page 页码 * @param pagesize 分页结果集大小 * @param paramValues 查询语句中的变量值 * @return 分页后存储Map<String, Object>类型的结果集List */ public List<Map<String, Object>> queryForPageList(String sql, int page, int pagesize, Object... paramValues); /** * 查询支持分页数据结果集,以List集合存储Map<String, Object>类型返回 * * @param namedSql 使用了命名参数的SQL语句(Example: SELECT * FROM table WHERE id >:id) * @param page 页码 * @param pagesize 分页结果集大小 * @param paramValues 命名参数值 * @return 分页后存储Map<String, Object>类型的结果集List */ public List<Map<String, Object>> queryForPageList(String namedSql, int page, int pagesize, Map<String, Object> paramValues); /** * 获取数据表所有字段名称值 * * @param tableName 数据库表名 * @return 表字段值集合 */ public List<String> queryTableFields(String tableName); /** * 判断数据库中是否存在表名为<code>tableName</code>的表 * * @param tableName 表名 * @return true--表存在,false--表不存在 */ public boolean isTableExist(String tableName); /** * 调用无参数存储过程 * * @param procedureName 存储过程名称 * @return true -- 调用成功, false -- 调用失败 */ public boolean callProcedure(String procedureName); /** * 调用存储过程 * * @param paramValues 存储过程参数值 * @return true -- 调用成功, false -- 调用失败 */ public boolean callProcedure(String procedureName, Object... paramValues); /** * 调用无参数存储过程,返回结果集 * * @param procedureName 存储过程名称 * @return 执行存储返回结果字符串 */ public String callProcedureForResult(String procedureName); /** * 调用无参数存储过程,返回结果对象 <br> * 存储过程中请将返回参数写在最前面 * * @param procedureName 存储过程名称 * @param sqlType java.sql.Types.xxx指定 * @return 执行存储返回结果对象 */ public Object callProcedureForResult(String procedureName, int sqlType); /** * 调用存储过程,返回结果字符串 <br> * 存储过程中请将返回参数写在最前面 * * @param procedureName 存储过程名称 * @param paramValues 存储过程参数值 * @return 执行存储返回return结果字符串 */ public String callProcedureForResult(String procedureName, Object... paramValues); /** * 调用存储过程,返回结果对象 <br> * 存储过程中请将返回参数写在最前面 * * @param procedureName 存储过程名称 * @param sqlType java.sql.Types.xxx指定 * @param paramValues 存储过程参数值 * @return 执行存储返回结果对象 */ public Object callProcedureForResult(String procedureName, int sqlType, Object... paramValues); /** * 调用存储过程返回结果集<br> * <code> * PROCEDURE TEST_P (param1 in varchar2,param2 out varchar2)<br> * * callProcedureForResult("TEST_P", java.sql.Types.VARCHAR, 1, "param1"); * * </code> * * @param procedureName 存储过程名称 * @param sqlType out参数的参数类型,使用 java.sql.Types.xxx 指定 * @param sqlTypeIndex out参数在所有参数集中的位置,位置计数从0开始 * @param paramValues in类型参数的参数值 * @return 执行存储过程返回的out参数结果集,顺序按照存储过程中out参数的先后顺序 */ public Object callProcedureForResult(String procedureName, int sqlType, int sqlTypeIndex, Object... paramValues); /** * 调用存储过程,返回结果对象集合List <br> * 存储过程中请将返回参数写在最前面 * * @param procedureName 存储过程名称 * @param sqlTypes java.sql.Types.xxx指定 * @param paramValues 存储过程参数值 * @return 执行存储返回结果对象集合List */ public List<Object> callProcedureForResult(String procedureName, int[] sqlTypes, Object... paramValues); /** * 调用存储过程返回结果集<br> * <code> * PROCEDURE TEST_P (param1 in varchar2,param2 out varchar2)<br> * * callProcedureForResult("TEST_P", new int[]{java.sql.Types.VARCHAR}, new int[]{1},"param1"); * * </code> * * @param procedureName 存储过程名称 * @param sqlTypes out参数的参数类型,使用 java.sql.Types.xxx 指定 * @param sqlTypesIndex out参数在所有参数集中的位置,位置计数从0开始,该参数的长度应该与sqlTypes相同,即sqlTypes与sqlTypesIndex应该一一对应 * @param paramValues in类型参数的参数值 * @return 执行存储过程返回的out参数结果集,顺序按照存储过程中out参数的先后顺序 */ public List<Object> callProcedureForResult(String procedureName, int[] sqlTypes, int[] sqlTypesIndex, Object... paramValues); /** * 设置批量操作提交的分段大小,默认不分批操作 * * @param batchSize 批量操作提交分段大小 */ public void setBatchSize(int batchSize); /** * 判断序列是否存在,仅用于Oracle数据库 * * @param sequenceName 序列名 * @return true -- 存在,false -- 不存在 */ public boolean isSequenceExist(String sequenceName); /** * 判断索引是否存在,该方法可用于MySQL和Oracle数据库 * * @param tableName 表名 * @param indexName 索引名 * @return true -- 存在,false -- 不存在 */ public boolean isIndexExist(String tableName, String indexName); /** * 判断函数是否存在,仅用于Oracle数据库 * * @param functionName 函数名 * @return true -- 存在,false -- 不存在 */ public boolean isFunctionExist(String functionName); /** * 判断存储过程是否存在,仅用于Oracle数据库 * * @param procedureName 存储过程名 * @return true -- 存在,false -- 不存在 */ public boolean isProcedureExist(String procedureName); /** * 判断是否可以获得当前数据源的连接 * * @return true -- 可获得,false -- 不可获得 */ public boolean isConnectionReachable(); /** * 获得当前数据源的数据源对象<br> * 注意:返回的对象是只读的,任何改变数据源属性的操作都将抛出UnsupportedOperationException异常 * * @return 数据源对象 */ public DataSource getDataSource(); /** * 从连接池获得一个数据库连接 * * @return 数据库连接对象 */ public Connection getConnection(); /** * 关系当前连接池中的连接 * * @param conn 要关闭的连接 */ public void close(Connection conn); /** * 关闭一个 <code>Statement</code>,这个实现避免了关闭一个空的 Statement, 并且在内部捕获了这个异常,同时在控制台 Throw。 * * @param st 要关闭的 Statement */ public void close(Statement st); /** * 关闭一个 <code>ResultSet</code>,这个实现避免了关闭一个空的 ResultSet, 并且在内部捕获了这个异常,同时在控制台 Throw。 * * @param rs 要关闭的 ResultSet */ public void close(ResultSet rs); }