forked from Tencent/APIJSON
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSQLExecutor.java
More file actions
executable file
·139 lines (111 loc) · 3.49 KB
/
SQLExecutor.java
File metadata and controls
executable file
·139 lines (111 loc) · 3.49 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
/*Copyright (C) 2020 THL A29 Limited, a Tencent company. All rights reserved.
This source code is licensed under the Apache License Version 2.0.*/
package apijson.orm;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Savepoint;
import java.sql.Statement;
import java.util.List;
import com.alibaba.fastjson.JSONObject;
import apijson.NotNull;
/**executor for query(read) or update(write) MySQL database
* @author Lemon
*/
public interface SQLExecutor<T extends Object> {
Parser<T> getParser();
SQLExecutor<T> setParser(Parser<T> parser);
/**保存缓存
* @param sql
* @param list
* @param config
*/
void putCache(String sql, List<JSONObject> list, SQLConfig<T> config);
/**获取缓存
* @param sql
* @param config
* @return
*/
List<JSONObject> getCache(String sql, SQLConfig<T> config);
/**获取缓存
* @param sql
* @param position
* @param config
* @return
*/
JSONObject getCacheItem(String sql, int position, SQLConfig<T> config);
/**移除缓存
* @param sql
* @param config
*/
void removeCache(String sql, SQLConfig<T> config);
/**执行SQL
* @param config
* @param unknownType
* @return
* @throws Exception
*/
JSONObject execute(@NotNull SQLConfig<T> config, boolean unknownType) throws Exception;
//executeQuery和executeUpdate这两个函数因为返回类型不同,所以不好合并
/**执行查询
* @param config
* @return
* @throws SQLException
*/
default ResultSet executeQuery(@NotNull SQLConfig<T> config) throws Exception {
return executeQuery(config, null);
}
ResultSet executeQuery(@NotNull SQLConfig<T> config, String sql) throws Exception;
/**执行增、删、改
* @param config
* @return
* @throws SQLException
*/
default int executeUpdate(@NotNull SQLConfig<T> config) throws Exception {
return executeUpdate(config, null);
}
int executeUpdate(@NotNull SQLConfig<T> config, String sql) throws Exception;
/**判断是否为JSON类型
* @param config
* @param rsmd
* @param position
* @param lable
* @return
*/
boolean isJSONType(@NotNull SQLConfig<T> config, ResultSetMetaData rsmd, int position, String lable);
Connection getConnection(@NotNull SQLConfig<T> config) throws Exception;
default Statement getStatement(@NotNull SQLConfig<T> config) throws Exception {
return getStatement(config, null);
}
Statement getStatement(@NotNull SQLConfig<T> config, String sql) throws Exception;
int getTransactionIsolation();
void setTransactionIsolation(int transactionIsolation);
/**开始事务
* @throws SQLException
*/
void begin(int transactionIsolation) throws SQLException;
/**回滚事务
* @throws SQLException
*/
void rollback() throws SQLException;
/**提交事务
* @throws SQLException
*/
void rollback(Savepoint savepoint) throws SQLException;
/**提交事务
* @throws SQLException
*/
void commit() throws SQLException;
/**关闭连接,释放资源
*/
void close();
ResultSet executeQuery(@NotNull Statement statement, String sql) throws Exception;
int executeUpdate(@NotNull Statement statement, String sql) throws Exception;
ResultSet execute(@NotNull Statement statement, String sql) throws Exception;
int getGeneratedSQLCount();
int getCachedSQLCount();
int getExecutedSQLCount();
long getExecutedSQLDuration();
long getSqlResultDuration();
}