Package cc.carm.lib.easysql.manager
Class SQLManagerImpl
- java.lang.Object
-
- cc.carm.lib.easysql.manager.SQLManagerImpl
-
- All Implemented Interfaces:
SQLManager
public class SQLManagerImpl extends java.lang.Object implements SQLManager
-
-
Field Summary
Fields Modifier and Type Field Description protected java.util.concurrent.ExecutorServiceexecutorPool
-
Constructor Summary
Constructors Constructor Description SQLManagerImpl(@NotNull javax.sql.DataSource dataSource)SQLManagerImpl(@NotNull javax.sql.DataSource dataSource, @NotNull org.slf4j.Logger logger, @Nullable java.lang.String name)SQLManagerImpl(@NotNull javax.sql.DataSource dataSource, @Nullable java.lang.String name)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description TableAlterBuilderalterTable(@NotNull java.lang.String tableName)对库中的某个表执行更改。DeleteBuildercreateDelete(@NotNull java.lang.String tableName)创建删除操作。InsertBuilder<PreparedSQLUpdateAction<java.lang.Integer>>createInsert(@NotNull java.lang.String tableName)创建一条插入操作。InsertBuilder<PreparedSQLUpdateBatchAction<java.lang.Integer>>createInsertBatch(@NotNull java.lang.String tableName)创建支持多组数据的插入操作。QueryBuildercreateQuery()新建一个查询。ReplaceBuilder<PreparedSQLUpdateAction<java.lang.Integer>>createReplace(@NotNull java.lang.String tableName)创建一条替换操作。ReplaceBuilder<PreparedSQLUpdateBatchAction<java.lang.Integer>>createReplaceBatch(@NotNull java.lang.String tableName)创建支持多组数据的替换操作。TableCreateBuildercreateTable(@NotNull java.lang.String tableName)在库中创建一个表。UpdateBuildercreateUpdate(@NotNull java.lang.String tableName)创建更新操作。java.lang.IntegerexecuteSQL(java.lang.String sql)执行一条不需要返回结果的SQL语句(多用于UPDATE、REPLACE、DELETE方法) 该方法使用 Statement 实现,请注意SQL注入风险!java.lang.IntegerexecuteSQL(java.lang.String sql, java.lang.Object[] params)执行一条不需要返回结果的预处理SQL更改(UPDATE、REPLACE、DELETE)@Nullable java.util.List<java.lang.Integer>executeSQLBatch(@NotNull java.lang.Iterable<java.lang.String> sqlBatch)执行多条不需要返回结果的SQL。java.util.List<java.lang.Integer>executeSQLBatch(@NotNull java.lang.String sql, java.lang.String... moreSQL)执行多条不需要返回结果的SQL。java.util.List<java.lang.Integer>executeSQLBatch(java.lang.String sql, java.lang.Iterable<java.lang.Object[]> paramsBatch)执行多条不需要返回结果的SQL更改(UPDATE、REPLACE、DELETE)<R> java.util.concurrent.CompletableFuture<R>fetchMetadata(@NotNull SQLBiFunction<java.sql.DatabaseMetaData,java.sql.Connection,java.sql.ResultSet> supplier, @NotNull SQLFunction<@NotNull java.sql.ResultSet,R> reader)获取并操作DatabaseMetaData提供的指定ResultSet以得到需要的数据库消息。<R> java.util.concurrent.CompletableFuture<R>fetchMetadata(@NotNull SQLBiFunction<java.sql.DatabaseMetaData,java.sql.Connection,R> reader)获取并操作DatabaseMetaData以得到需要的数据库消息。TableMetadataBuilderfetchTableMetadata(@NotNull java.lang.String tablePattern)快速获取表的部分元数据。@NotNull java.util.Map<java.util.UUID,SQLQuery>getActiveQuery()得到正使用的查询。@NotNull java.sql.ConnectiongetConnection()得到一个数据库连接实例@NotNull javax.sql.DataSourcegetDataSource()得到连接池源@NotNull SQLDebugHandlergetDebugHandler()获取调试处理器,用于处理调试信息。@NotNull SQLExceptionHandlergetExceptionHandler()获取改管理器提供的默认异常处理器。@NotNull java.util.concurrent.ExecutorServicegetExecutorPool()获取用于执行SQLAction.executeAsync()的线程池。org.slf4j.LoggergetLogger()booleanisDebugMode()voidsetDebugHandler(@NotNull SQLDebugHandler debugHandler)设定调试处理器,默认为SQLDebugHandler.defaultHandler(Logger)。voidsetDebugMode(@NotNull java.util.function.Supplier<@NotNull java.lang.Boolean> debugMode)设定是否启用调试模式。voidsetExceptionHandler(@Nullable SQLExceptionHandler handler)设定通用的异常处理器。voidsetExecutorPool(@NotNull java.util.concurrent.ExecutorService executorPool)设定用于执行SQLAction.executeAsync()的线程池.-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface cc.carm.lib.easysql.api.SQLManager
fetchMetadata, fetchMetadata, setDebugMode
-
-
-
-
Constructor Detail
-
SQLManagerImpl
public SQLManagerImpl(@NotNull @NotNull javax.sql.DataSource dataSource)
-
SQLManagerImpl
public SQLManagerImpl(@NotNull @NotNull javax.sql.DataSource dataSource, @Nullable @Nullable java.lang.String name)
-
SQLManagerImpl
public SQLManagerImpl(@NotNull @NotNull javax.sql.DataSource dataSource, @NotNull @NotNull org.slf4j.Logger logger, @Nullable @Nullable java.lang.String name)
-
-
Method Detail
-
isDebugMode
public boolean isDebugMode()
- Specified by:
isDebugModein interfaceSQLManager
-
setDebugMode
public void setDebugMode(@NotNull @NotNull java.util.function.Supplier<@NotNull java.lang.Boolean> debugMode)Description copied from interface:SQLManager设定是否启用调试模式。 启用调试模式后,会在每次执行SQL语句时,调用SQLManager.getDebugHandler()来输出调试信息。- Specified by:
setDebugModein interfaceSQLManager- Parameters:
debugMode- 是否启用调试模式
-
getDebugHandler
@NotNull public @NotNull SQLDebugHandler getDebugHandler()
Description copied from interface:SQLManager获取调试处理器,用于处理调试信息。- Specified by:
getDebugHandlerin interfaceSQLManager- Returns:
SQLDebugHandler
-
setDebugHandler
public void setDebugHandler(@NotNull @NotNull SQLDebugHandler debugHandler)Description copied from interface:SQLManager设定调试处理器,默认为SQLDebugHandler.defaultHandler(Logger)。- Specified by:
setDebugHandlerin interfaceSQLManager- Parameters:
debugHandler-SQLDebugHandler
-
getLogger
public org.slf4j.Logger getLogger()
- Specified by:
getLoggerin interfaceSQLManager
-
getExecutorPool
@NotNull public @NotNull java.util.concurrent.ExecutorService getExecutorPool()
Description copied from interface:SQLManager- Specified by:
getExecutorPoolin interfaceSQLManager- Returns:
ExecutorService
-
setExecutorPool
public void setExecutorPool(@NotNull @NotNull java.util.concurrent.ExecutorService executorPool)Description copied from interface:SQLManager- Specified by:
setExecutorPoolin interfaceSQLManager- Parameters:
executorPool-ExecutorService
-
getDataSource
@NotNull public @NotNull javax.sql.DataSource getDataSource()
Description copied from interface:SQLManager得到连接池源- Specified by:
getDataSourcein interfaceSQLManager- Returns:
- DataSource
-
getConnection
@NotNull public @NotNull java.sql.Connection getConnection() throws java.sql.SQLExceptionDescription copied from interface:SQLManager得到一个数据库连接实例- Specified by:
getConnectionin interfaceSQLManager- Returns:
- Connection
- Throws:
java.sql.SQLException- 见DataSource.getConnection()
-
getActiveQuery
@NotNull public @NotNull java.util.Map<java.util.UUID,SQLQuery> getActiveQuery()
Description copied from interface:SQLManager得到正使用的查询。- Specified by:
getActiveQueryin interfaceSQLManager- Returns:
- 查询列表
-
getExceptionHandler
@NotNull public @NotNull SQLExceptionHandler getExceptionHandler()
Description copied from interface:SQLManager获取改管理器提供的默认异常处理器。 若未使用过SQLManager.setExceptionHandler(SQLExceptionHandler)方法, 则默认返回SQLExceptionHandler.detailed(Logger)。- Specified by:
getExceptionHandlerin interfaceSQLManager- Returns:
SQLExceptionHandler
-
setExceptionHandler
public void setExceptionHandler(@Nullable @Nullable SQLExceptionHandler handler)Description copied from interface:SQLManager设定通用的异常处理器。
在使用SQLAction.execute(SQLExceptionHandler)等相关方法时,若传入的处理器为null,则会采用此处理器。
若该方法传入参数为 null,则会使用SQLExceptionHandler.detailed(Logger)。- Specified by:
setExceptionHandlerin interfaceSQLManager- Parameters:
handler- 异常处理器
-
executeSQL
public java.lang.Integer executeSQL(java.lang.String sql)
Description copied from interface:SQLManager执行一条不需要返回结果的SQL语句(多用于UPDATE、REPLACE、DELETE方法) 该方法使用 Statement 实现,请注意SQL注入风险!- Specified by:
executeSQLin interfaceSQLManager- Parameters:
sql- SQL语句内容- Returns:
- 更新的行数
- See Also:
SQLUpdateAction
-
executeSQL
public java.lang.Integer executeSQL(java.lang.String sql, java.lang.Object[] params)Description copied from interface:SQLManager执行一条不需要返回结果的预处理SQL更改(UPDATE、REPLACE、DELETE)- Specified by:
executeSQLin interfaceSQLManager- Parameters:
sql- SQL语句内容params- SQL语句中 ? 的对应参数- Returns:
- 更新的行数
- See Also:
PreparedSQLUpdateAction
-
executeSQLBatch
public java.util.List<java.lang.Integer> executeSQLBatch(java.lang.String sql, java.lang.Iterable<java.lang.Object[]> paramsBatch)Description copied from interface:SQLManager执行多条不需要返回结果的SQL更改(UPDATE、REPLACE、DELETE)- Specified by:
executeSQLBatchin interfaceSQLManager- Parameters:
sql- SQL语句内容paramsBatch- SQL语句中对应?的参数组- Returns:
- 对应参数返回的行数
- See Also:
PreparedSQLUpdateBatchAction
-
executeSQLBatch
public java.util.List<java.lang.Integer> executeSQLBatch(@NotNull @NotNull java.lang.String sql, java.lang.String... moreSQL)Description copied from interface:SQLManager执行多条不需要返回结果的SQL。 该方法使用 Statement 实现,请注意SQL注入风险!- Specified by:
executeSQLBatchin interfaceSQLManager- Parameters:
sql- SQL语句内容moreSQL- 更多SQL语句内容- Returns:
- 对应参数返回的行数
- See Also:
SQLUpdateBatchAction
-
executeSQLBatch
@Nullable public @Nullable java.util.List<java.lang.Integer> executeSQLBatch(@NotNull @NotNull java.lang.Iterable<java.lang.String> sqlBatch)Description copied from interface:SQLManager执行多条不需要返回结果的SQL。- Specified by:
executeSQLBatchin interfaceSQLManager- Parameters:
sqlBatch- SQL语句内容- Returns:
- 对应参数返回的行数
-
fetchMetadata
public <R> java.util.concurrent.CompletableFuture<R> fetchMetadata(@NotNull @NotNull SQLBiFunction<java.sql.DatabaseMetaData,java.sql.Connection,R> reader)Description copied from interface:SQLManager获取并操作DatabaseMetaData以得到需要的数据库消息。- Specified by:
fetchMetadatain interfaceSQLManager- Type Parameters:
R- 最终结果的返回类型- Parameters:
reader- 操作与读取的方法- Returns:
- 最终结果,通过
CompletableFuture.get()可阻塞并等待结果返回。
-
fetchMetadata
public <R> java.util.concurrent.CompletableFuture<R> fetchMetadata(@NotNull @NotNull SQLBiFunction<java.sql.DatabaseMetaData,java.sql.Connection,java.sql.ResultSet> supplier, @NotNull @NotNull SQLFunction<@NotNull java.sql.ResultSet,R> reader)Description copied from interface:SQLManager获取并操作DatabaseMetaData提供的指定ResultSet以得到需要的数据库消息。
该方法会自动关闭ResultSet。- Specified by:
fetchMetadatain interfaceSQLManager- Type Parameters:
R- 最终结果的返回类型- Parameters:
supplier- 操作DatabaseMetaData以提供信息所在的ResultSetreader- 读取ResultSet中指定信息的方法- Returns:
- 最终结果,通过
CompletableFuture.get()可阻塞并等待结果返回。
-
createTable
public TableCreateBuilder createTable(@NotNull @NotNull java.lang.String tableName)
Description copied from interface:SQLManager在库中创建一个表。- Specified by:
createTablein interfaceSQLManager- Parameters:
tableName- 表名- Returns:
TableCreateBuilder
-
alterTable
public TableAlterBuilder alterTable(@NotNull @NotNull java.lang.String tableName)
Description copied from interface:SQLManager对库中的某个表执行更改。- Specified by:
alterTablein interfaceSQLManager- Parameters:
tableName- 表名- Returns:
TableAlterBuilder
-
fetchTableMetadata
public TableMetadataBuilder fetchTableMetadata(@NotNull @NotNull java.lang.String tablePattern)
Description copied from interface:SQLManager快速获取表的部分元数据。
当需要获取其他元数据时,请使用SQLManager.fetchMetadata(SQLFunction, SQLFunction)方法。- Specified by:
fetchTableMetadatain interfaceSQLManager- Parameters:
tablePattern- 表名通配符- Returns:
TableMetadataBuilder
-
createQuery
public QueryBuilder createQuery()
Description copied from interface:SQLManager新建一个查询。- Specified by:
createQueryin interfaceSQLManager- Returns:
QueryBuilder
-
createInsertBatch
public InsertBuilder<PreparedSQLUpdateBatchAction<java.lang.Integer>> createInsertBatch(@NotNull @NotNull java.lang.String tableName)
Description copied from interface:SQLManager创建支持多组数据的插入操作。- Specified by:
createInsertBatchin interfaceSQLManager- Parameters:
tableName- 目标表名- Returns:
InsertBuilder
-
createInsert
public InsertBuilder<PreparedSQLUpdateAction<java.lang.Integer>> createInsert(@NotNull @NotNull java.lang.String tableName)
Description copied from interface:SQLManager创建一条插入操作。- Specified by:
createInsertin interfaceSQLManager- Parameters:
tableName- 目标表名- Returns:
InsertBuilder
-
createReplaceBatch
public ReplaceBuilder<PreparedSQLUpdateBatchAction<java.lang.Integer>> createReplaceBatch(@NotNull @NotNull java.lang.String tableName)
Description copied from interface:SQLManager创建支持多组数据的替换操作。- Specified by:
createReplaceBatchin interfaceSQLManager- Parameters:
tableName- 目标表名- Returns:
ReplaceBuilder
-
createReplace
public ReplaceBuilder<PreparedSQLUpdateAction<java.lang.Integer>> createReplace(@NotNull @NotNull java.lang.String tableName)
Description copied from interface:SQLManager创建一条替换操作。- Specified by:
createReplacein interfaceSQLManager- Parameters:
tableName- 目标表名- Returns:
ReplaceBuilder
-
createUpdate
public UpdateBuilder createUpdate(@NotNull @NotNull java.lang.String tableName)
Description copied from interface:SQLManager创建更新操作。- Specified by:
createUpdatein interfaceSQLManager- Parameters:
tableName- 目标表名- Returns:
UpdateBuilder
-
createDelete
public DeleteBuilder createDelete(@NotNull @NotNull java.lang.String tableName)
Description copied from interface:SQLManager创建删除操作。- Specified by:
createDeletein interfaceSQLManager- Parameters:
tableName- 目标表名- Returns:
DeleteBuilder
-
-