1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.apache.ibatis.testcontainers;
17
18 import javax.sql.DataSource;
19
20 import org.apache.ibatis.datasource.pooled.PooledDataSource;
21 import org.apache.ibatis.datasource.unpooled.UnpooledDataSource;
22 import org.testcontainers.containers.MySQLContainer;
23 import org.testcontainers.junit.jupiter.Container;
24 import org.testcontainers.junit.jupiter.Testcontainers;
25
26 @Testcontainers
27 public final class MysqlContainer {
28
29 private static final String DB_NAME = "mybatis_test";
30 private static final String USERNAME = "u";
31 private static final String PASSWORD = "p";
32 private static final String DRIVER = "com.mysql.cj.jdbc.Driver";
33
34 @Container
35 private static final MySQLContainer<?> INSTANCE = initContainer();
36
37 private static MySQLContainer<?> initContainer() {
38 @SuppressWarnings("resource")
39 MySQLContainer<?> container = new MySQLContainer<>().withDatabaseName(DB_NAME).withUsername(USERNAME)
40 .withPassword(PASSWORD).withUrlParam("useSSL", "false");
41 container.start();
42 return container;
43 }
44
45 public static DataSource getUnpooledDataSource() {
46 return new UnpooledDataSource(MysqlContainer.DRIVER, INSTANCE.getJdbcUrl(), MysqlContainer.USERNAME,
47 MysqlContainer.PASSWORD);
48 }
49
50 public static PooledDataSource getPooledDataSource() {
51 return new PooledDataSource(MysqlContainer.DRIVER, INSTANCE.getJdbcUrl(), MysqlContainer.USERNAME,
52 MysqlContainer.PASSWORD);
53 }
54
55 private MysqlContainer() {
56 }
57 }