Class SimpleJdbcTemplate

java.lang.Object
xyz.zhouxy.jdbc.SimpleJdbcTemplate
All Implemented Interfaces:
JdbcOperations

public class SimpleJdbcTemplate extends Object implements JdbcOperations
JDBC 操作的模板类,对原生 JDBC 进行轻量封装,提供查询、更新、批量操作等便捷方法。

主要能力:

线程安全:本类无内部可变状态,线程安全。所依赖的 DataSource 需自行保证线程安全。

Since:
1.0.0
Author:
ZhouXY
See Also:
  • Constructor Details

  • Method Details

    • query

      public <T> T query(String sql, Object[] params, ResultHandler<T> resultHandler) throws SQLException
      执行查询,并按照自定义处理逻辑对结果进行处理,将结果转换为指定类型并返回
      Specified by:
      query in interface JdbcOperations
      Type Parameters:
      T - 返回结果类型
      Parameters:
      sql - SQL
      params - 参数
      resultHandler - 结果处理器,用于处理 ResultSet
      Returns:
      查询结果
      Throws:
      SQLException - SQL异常
    • queryList

      public <T> List<T> queryList(String sql, Object[] params, RowMapper<T> rowMapper) throws SQLException
      执行查询,将查询结果的每一行数据按照指定逻辑进行处理,返回结果列表
      Specified by:
      queryList in interface JdbcOperations
      Type Parameters:
      T - 返回结果列表中每一行数据的类型
      Parameters:
      sql - SQL
      params - 参数
      rowMapper - ResultSet 中每一行的数据的处理逻辑
      Returns:
      查询结果列表
      Throws:
      SQLException - SQL 异常
    • queryList

      public <T> List<T> queryList(String sql, Object[] params, Class<T> clazz) throws SQLException
      执行查询,返回结果映射为指定的类型。当结果为单列时使用
      Specified by:
      queryList in interface JdbcOperations
      Type Parameters:
      T - 目标类型
      Parameters:
      sql - SQL
      params - 参数
      clazz - 目标类型
      Returns:
      映射结果。如果查询结果为空,则返回空列表
      Throws:
      SQLException - SQL异常
    • queryList

      public List<Map<String,Object>> queryList(String sql, Object[] params) throws SQLException
      执行查询,每一行数据映射为 Map<String, Object>,返回结果列表
      Specified by:
      queryList in interface JdbcOperations
      Parameters:
      sql - SQL
      params - 参数列表
      Returns:
      结果列表
      Throws:
      SQLException - SQL 异常
    • queryFirst

      public <T> Optional<T> queryFirst(String sql, Object[] params, RowMapper<T> rowMapper) throws SQLException
      执行查询,将查询结果的第一行数据按照指定逻辑进行处理,返回 Optional
      Specified by:
      queryFirst in interface JdbcOperations
      Type Parameters:
      T - 目标类型
      Parameters:
      sql - SQL
      params - 参数
      rowMapper - ResultSet 中每一行的数据的处理逻辑
      Returns:
      查询结果
      Throws:
      SQLException - SQL 异常
    • queryFirst

      public <T> Optional<T> queryFirst(String sql, Object[] params, Class<T> clazz) throws SQLException
      查询第一行第一列,并转换为指定类型
      Specified by:
      queryFirst in interface JdbcOperations
      Type Parameters:
      T - 目标类型
      Parameters:
      sql - SQL
      params - 参数
      clazz - 目标类型
      Returns:
      查询结果
      Throws:
      SQLException - SQL 异常
    • queryFirst

      public Optional<Map<String,Object>> queryFirst(String sql, Object[] params) throws SQLException
      执行查询,将第一行数据转为 Map<String, Object>
      Specified by:
      queryFirst in interface JdbcOperations
      Parameters:
      sql - SQL
      params - 参数
      Returns:
      查询结果
      Throws:
      SQLException - SQL 异常
    • queryBoolean

      public boolean queryBoolean(String sql, Object[] params) throws SQLException
      查询第一行第一列并转换为 boolean
      Specified by:
      queryBoolean in interface JdbcOperations
      Parameters:
      sql - SQL
      params - 参数
      Returns:
      查询结果。如果查询结果为空,则返回 false
      Throws:
      SQLException - SQL 异常
    • update

      public int update(String sql, Object[] params) throws SQLException
      执行更新操作
      Specified by:
      update in interface JdbcOperations
      Parameters:
      sql - 要执行的 SQL
      params - 参数
      Returns:
      更新记录数
      Throws:
      SQLException - SQL 异常
    • updateAndReturnKeys

      public <T> List<T> updateAndReturnKeys(String sql, Object[] params, RowMapper<T> rowMapper) throws SQLException
      执行 SQL 并返回生成的 keys
      Specified by:
      updateAndReturnKeys in interface JdbcOperations
      Type Parameters:
      T - 映射结果类型
      Parameters:
      sql - 要执行的 SQL
      params - 参数
      rowMapper - 行数据映射逻辑
      Returns:
      generated keys
      Throws:
      SQLException - 数据库执行异常
    • batchUpdate

      public BatchUpdateResult batchUpdate(String sql, @Nullable Collection<Object[]> params, int batchSize) throws SQLException
      批量更新

      跑批过程中发生异常即中断操作,并返回结果。

      当无法获取所更新的行数时,对应位置的更新行数将被设置为 JdbcOperationSupport.UNKNOWN_COUNT

      Specified by:
      batchUpdate in interface JdbcOperations
      Parameters:
      sql - SQL 语句
      params - 参数列表
      batchSize - 每次批量更新的数据量
      Returns:
      批量更新的结果
      Throws:
      SQLException - SQL 异常
    • batchUpdate

      public BatchUpdateResult batchUpdate(String sql, @Nullable Collection<Object[]> params, int batchSize, boolean quietly) throws SQLException
      批量更新

      当无法获取所更新的行数时,对应位置的更新行数将被设置为 JdbcOperationSupport.UNKNOWN_COUNT

      Specified by:
      batchUpdate in interface JdbcOperations
      Parameters:
      sql - sql语句
      params - 参数列表
      batchSize - 每次批量更新的数据量
      quietly - 静默分批更新。 如果 quietlytrue,分批更新过程中发生异常不中断操作; 如果 quietlyfalse,分批更新过程中发生异常即中断操作,并返回结果。
      Returns:
      批次更新结果
      Throws:
      SQLException - 数据库执行异常
    • transaction

      public TransactionTemplate transaction()