@@ -34,6 +34,7 @@ public class OceanBaseContainer extends JdbcDatabaseContainer<OceanBaseContainer
3434 private boolean enableFastboot ;
3535 private String mode ;
3636 private String tenantName = DEFAULT_TEST_TENANT_NAME ;
37+ private String driverClassName = "com.mysql.cj.jdbc.Driver" ;
3738
3839 public OceanBaseContainer (String dockerImageName ) {
3940 this (DockerImageName .parse (dockerImageName ));
@@ -53,7 +54,7 @@ public Integer getMappedPort(int originalPort) {
5354
5455 @ Override
5556 public String getDriverClassName () {
56- return "com.mysql.cj.jdbc.Driver" ;
57+ return driverClassName ;
5758 }
5859
5960 @ Override
@@ -63,7 +64,8 @@ public String getJdbcUrl() {
6364
6465 public String getJdbcUrl (String databaseName ) {
6566 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 ;
6769 }
6870
6971 @ Override
@@ -124,6 +126,28 @@ public OceanBaseContainer withTenant(String tenantName) {
124126 return self ();
125127 }
126128
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+
127151 @ Override
128152 protected void configure () {
129153 if (StringUtils .isNotBlank (mode )) {
0 commit comments