1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.mybatis.guice.datasource.builtin;
17
18 import jakarta.inject.Inject;
19 import jakarta.inject.Named;
20 import jakarta.inject.Provider;
21
22 import java.util.Properties;
23
24 import javax.sql.DataSource;
25
26 import org.apache.ibatis.datasource.pooled.PooledDataSource;
27
28
29
30
31 public final class PooledDataSourceProvider implements Provider<DataSource> {
32
33
34
35
36 private final PooledDataSource dataSource;
37
38
39
40
41
42
43
44
45
46
47
48 @Inject
49 public PooledDataSourceProvider(@Named("JDBC.driver") final String driver, @Named("JDBC.url") final String url,
50 @Named("JDBC.driverClassLoader") final ClassLoader driverClassLoader) {
51 dataSource = new PooledDataSource(driverClassLoader, driver, url, null, null);
52 }
53
54
55
56
57
58
59
60
61
62 @com.google.inject.Inject(optional = true)
63 public void setUser(@Named("JDBC.username") final String username) {
64 dataSource.setUsername(username);
65 }
66
67
68
69
70
71
72
73
74
75 @com.google.inject.Inject(optional = true)
76 public void setPassword(@Named("JDBC.password") final String password) {
77 dataSource.setPassword(password);
78 }
79
80
81
82
83
84
85
86 @com.google.inject.Inject(optional = true)
87 public void setAutoCommit(@Named("JDBC.autoCommit") final boolean autoCommit) {
88 dataSource.setDefaultAutoCommit(autoCommit);
89 }
90
91
92
93
94
95
96
97 @com.google.inject.Inject(optional = true)
98 public void setLoginTimeout(@Named("JDBC.loginTimeout") final int loginTimeout) {
99 dataSource.setLoginTimeout(loginTimeout);
100 }
101
102 @com.google.inject.Inject(optional = true)
103 public void setDriverProperties(@Named("JDBC.driverProperties") final Properties driverProperties) {
104 dataSource.setDriverProperties(driverProperties);
105 }
106
107
108
109
110
111
112
113 @com.google.inject.Inject(optional = true)
114 public void setMaximumActiveConnections(
115 @Named("mybatis.pooled.maximumActiveConnections") final int maximumActiveConnections) {
116 dataSource.setPoolMaximumActiveConnections(maximumActiveConnections);
117 }
118
119
120
121
122
123
124
125 @com.google.inject.Inject(optional = true)
126 public void setMaximumCheckoutTime(@Named("mybatis.pooled.maximumCheckoutTime") final int maximumCheckoutTime) {
127 dataSource.setPoolMaximumCheckoutTime(maximumCheckoutTime);
128 }
129
130
131
132
133
134
135
136 @com.google.inject.Inject(optional = true)
137 public void setMaximumIdleConnections(
138 @Named("mybatis.pooled.maximumIdleConnections") final int maximumIdleConnections) {
139 dataSource.setPoolMaximumIdleConnections(maximumIdleConnections);
140 }
141
142
143
144
145
146
147
148 @com.google.inject.Inject(optional = true)
149 public void setPingConnectionsNotUsedFor(
150 @Named("mybatis.pooled.pingConnectionsNotUsedFor") final int pingConnectionsNotUsedFor) {
151 dataSource.setPoolPingConnectionsNotUsedFor(pingConnectionsNotUsedFor);
152 }
153
154
155
156
157
158
159
160 @com.google.inject.Inject(optional = true)
161 public void setPingEnabled(@Named("mybatis.pooled.pingEnabled") final boolean pingEnabled) {
162 dataSource.setPoolPingEnabled(pingEnabled);
163 }
164
165
166
167
168
169
170
171 @com.google.inject.Inject(optional = true)
172 public void setPingEnabled(@Named("mybatis.pooled.pingQuery") final String pingQuery) {
173 dataSource.setPoolPingQuery(pingQuery);
174 }
175
176
177
178
179
180
181
182 @com.google.inject.Inject(optional = true)
183 public void setTimeToWait(@Named("mybatis.pooled.timeToWait") final int timeToWait) {
184 dataSource.setPoolTimeToWait(timeToWait);
185 }
186
187 @Override
188 public DataSource get() {
189 return dataSource;
190 }
191
192 }