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
·137 lines (109 loc) · 3.37 KB
/
SQLExecutor.java
File metadata and controls
executable file
·137 lines (109 loc) · 3.37 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
/*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 {
/**保存缓存
* @param sql
* @param list
* @param config
*/
void putCache(String sql, List<JSONObject> list, SQLConfig config);
/**获取缓存
* @param sql
* @param config
* @return
*/
List<JSONObject> getCache(String sql, SQLConfig config);
/**获取缓存
* @param sql
* @param position
* @param config
* @return
*/
JSONObject getCacheItem(String sql, int position, SQLConfig config);
/**移除缓存
* @param sql
* @param config
*/
void removeCache(String sql, SQLConfig config);
/**执行SQL
* @param config
* @param unknownType
* @return
* @throws Exception
*/
JSONObject execute(@NotNull SQLConfig config, boolean unknownType) throws Exception;
//executeQuery和executeUpdate这两个函数因为返回类型不同,所以不好合并
/**执行查询
* @param config
* @return
* @throws SQLException
*/
default ResultSet executeQuery(@NotNull SQLConfig config) throws Exception {
return executeQuery(config, null);
}
ResultSet executeQuery(@NotNull SQLConfig config, String sql) throws Exception;
/**执行增、删、改
* @param config
* @return
* @throws SQLException
*/
default int executeUpdate(@NotNull SQLConfig config) throws Exception {
return executeUpdate(config, null);
}
int executeUpdate(@NotNull SQLConfig config, String sql) throws Exception;
/**判断是否为JSON类型
* @param config
* @param rsmd
* @param position
* @param lable
* @return
*/
boolean isJSONType(@NotNull SQLConfig config, ResultSetMetaData rsmd, int position, String lable);
Connection getConnection(@NotNull SQLConfig config) throws Exception;
default Statement getStatement(@NotNull SQLConfig config) throws Exception {
return getStatement(config, null);
}
Statement getStatement(@NotNull SQLConfig 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();
}