@@ -34,6 +34,7 @@ public class OceanBaseContainer extends JdbcDatabaseContainer<OceanBaseContainer
34
34
private boolean enableFastboot ;
35
35
private String mode ;
36
36
private String tenantName = DEFAULT_TEST_TENANT_NAME ;
37
+ private String driverClassName = "com.mysql.cj.jdbc.Driver" ;
37
38
38
39
public OceanBaseContainer (String dockerImageName ) {
39
40
this (DockerImageName .parse (dockerImageName ));
@@ -53,7 +54,7 @@ public Integer getMappedPort(int originalPort) {
53
54
54
55
@ Override
55
56
public String getDriverClassName () {
56
- return "com.mysql.cj.jdbc.Driver" ;
57
+ return driverClassName ;
57
58
}
58
59
59
60
@ Override
@@ -63,7 +64,8 @@ public String getJdbcUrl() {
63
64
64
65
public String getJdbcUrl (String databaseName ) {
65
66
String additionalUrlParams = constructUrlParameters ("?" , "&" );
66
- return "jdbc:mysql://" + getHost () + ":" + getMappedPort (SQL_PORT ) + "/" + databaseName + additionalUrlParams ;
67
+ String prefix = driverClassName .contains ("mysql" ) ? "jdbc:mysql://" : "jdbc:oceanbase://" ;
68
+ return prefix + getHost () + ":" + getMappedPort (SQL_PORT ) + "/" + databaseName + additionalUrlParams ;
67
69
}
68
70
69
71
@ Override
@@ -124,6 +126,28 @@ public OceanBaseContainer withTenant(String tenantName) {
124
126
return self ();
125
127
}
126
128
129
+ /**
130
+ * Set the driver class name.
131
+ *
132
+ * @param driverClassName the driver class name
133
+ * @return this
134
+ */
135
+ public OceanBaseContainer withDriverClassName (String driverClassName ) {
136
+ if (StringUtils .isEmpty (driverClassName )) {
137
+ throw new IllegalArgumentException ("Driver class name cannot be null or empty" );
138
+ }
139
+ if (!driverClassName .contains ("mysql" ) && !driverClassName .contains ("oceanbase" )) {
140
+ throw new IllegalArgumentException ("Driver class name should contains 'mysql' or 'oceanbase'" );
141
+ }
142
+ try {
143
+ Class .forName (driverClassName );
144
+ } catch (ClassNotFoundException e ) {
145
+ throw new IllegalArgumentException ("Driver class not found" , e );
146
+ }
147
+ this .driverClassName = driverClassName ;
148
+ return self ();
149
+ }
150
+
127
151
@ Override
128
152
protected void configure () {
129
153
if (StringUtils .isNotBlank (mode )) {
0 commit comments