-
Notifications
You must be signed in to change notification settings - Fork 22
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[feature] add mybatis-plus samples (#37)
* [feature] add mybatis-plus samples * [improve] add new module for ci * [improve] add run.sh for ci * [improve] remove chinese comments * [improve] remove chinese comments * [improve] remove useless dependencies * [improve] add readme and readme-cn * [improve] update jdk version * [improve] support jdk 8 * [improve] update with_oceanbase_container false
- Loading branch information
1 parent
88307d0
commit 126bac1
Showing
10 changed files
with
404 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,108 @@ | ||
# MybatisPlus Java | ||
|
||
[English](README.md) | 简体中文 | ||
|
||
本文介绍了如何通过 `mybatisplus-java` 启动和测试 OceanBase Docker | ||
容器,更多详细信息可以参见 https://github.com/baomidou/mybatis-plus | ||
以及 https://java.testcontainers.org/modules/databases/oceanbase 。 | ||
|
||
## 快速开始 | ||
|
||
将 OceanBase 驱动、TestContainers OceanBase、MybatisPlusStarter、SpringBootStarter Test 模块添加到 POM。 | ||
|
||
```xml | ||
|
||
<dependencies> | ||
<dependency> | ||
<groupId>com.oceanbase</groupId> | ||
<artifactId>oceanbase-client</artifactId> | ||
<version>2.4.9</version> | ||
</dependency> | ||
<dependency> | ||
<groupId>org.testcontainers</groupId> | ||
<artifactId>oceanbase</artifactId> | ||
<version>1.19.7</version> | ||
<scope>test</scope> | ||
</dependency> | ||
<dependency> | ||
<groupId>com.baomidou</groupId> | ||
<artifactId>mybatis-plus-boot-starter</artifactId> | ||
<version>3.5.6</version> | ||
<scope>test</scope> | ||
</dependency> | ||
<dependency> | ||
<groupId>org.springframework.boot</groupId> | ||
<artifactId>spring-boot-starter</artifactId> | ||
</dependency> | ||
|
||
<dependency> | ||
<groupId>org.projectlombok</groupId> | ||
<artifactId>lombok</artifactId> | ||
<optional>true</optional> | ||
</dependency> | ||
<dependency> | ||
<groupId>org.springframework.boot</groupId> | ||
<artifactId>spring-boot-starter-test</artifactId> | ||
<scope>test</scope> | ||
</dependency> | ||
<dependency> | ||
<groupId>org.testcontainers</groupId> | ||
<artifactId>testcontainers</artifactId> | ||
<version>1.19.7</version> | ||
<scope>test</scope> | ||
</dependency> | ||
<dependency> | ||
<groupId>org.testcontainers</groupId> | ||
<artifactId>junit-jupiter</artifactId> | ||
<version>1.19.7</version> | ||
<scope>test</scope> | ||
</dependency> | ||
</dependencies> | ||
``` | ||
|
||
以 [MybatisPlusJavaApplicationTests.java](src/test/java/com/oceanbase/samples/mybatisplusjava/MybatisPlusJavaApplicationTests.java) | ||
代码为例。 | ||
|
||
以下代码不仅实现了`OceanBaseCEContainer`的生命周期管理。 它将在执行任何测试用例之前启动容器实例,并在执行所有测试用例后停止容器,而且还在期间使用 | ||
ScriptUtils.executeSqlScript 执行数据库初始化 SQL。 | ||
|
||
```java | ||
|
||
@SpringBootTest | ||
@Testcontainers | ||
class MybatisPlusJavaApplicationTests { | ||
|
||
@Container | ||
public static OceanBaseCEContainer oceanBaseContainer = new OceanBaseCEContainer(DockerImageName.parse("oceanbase/oceanbase-ce:latest")) | ||
.withEnv("MODE", "slim") | ||
.withEnv("FASTBOOT", "true"); | ||
@Autowired | ||
private PersonMapper personMapper; | ||
|
||
@DynamicPropertySource | ||
static void oceanBaseProperties(DynamicPropertyRegistry registry) { | ||
registry.add("spring.datasource.url", oceanBaseContainer::getJdbcUrl); | ||
registry.add("spring.datasource.username", oceanBaseContainer::getUsername); | ||
registry.add("spring.datasource.password", oceanBaseContainer::getPassword); | ||
registry.add("spring.datasource.driver-class-name", oceanBaseContainer::getDriverClassName); | ||
} | ||
|
||
@BeforeAll | ||
static void setup(@Autowired DataSource dataSource) throws Exception { | ||
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); | ||
assertNotNull(jdbcTemplate.getDataSource()); | ||
ScriptUtils.executeSqlScript(jdbcTemplate.getDataSource().getConnection(), new ClassPathResource("init.sql")); | ||
} | ||
} | ||
``` | ||
|
||
您可以在测试用例中使用 MybatisPlus 操作 OceanBase 实例,如下所示: | ||
|
||
```java | ||
|
||
@Test | ||
void testSelectList() { | ||
List<Person> persons = personMapper.selectList(null); | ||
assertFalse(persons.isEmpty()); | ||
} | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,110 @@ | ||
# MybatisPlus Java | ||
|
||
English | [简体中文](README-CN.md) | ||
|
||
This document introduces how to start and test the OceanBase Docker container using `mybatisplus-java`. For more | ||
details, please see https://github.com/baomidou/mybatis-plus | ||
and https://java.testcontainers.org/modules/databases/oceanbase. | ||
|
||
## Quick Start | ||
|
||
Add the OceanBase driver, TestContainers OceanBase, MybatisPlusStarter, and SpringBootStarter Test modules to your POM. | ||
|
||
```xml | ||
|
||
<dependencies> | ||
<dependency> | ||
<groupId>com.oceanbase</groupId> | ||
<artifactId>oceanbase-client</artifactId> | ||
<version>2.4.9</version> | ||
</dependency> | ||
<dependency> | ||
<groupId>org.testcontainers</groupId> | ||
<artifactId>oceanbase</artifactId> | ||
<version>1.19.7</version> | ||
<scope>test</scope> | ||
</dependency> | ||
<dependency> | ||
<groupId>com.baomidou</groupId> | ||
<artifactId>mybatis-plus-boot-starter</artifactId> | ||
<version>3.5.6</version> | ||
<scope>test</scope> | ||
</dependency> | ||
<dependency> | ||
<groupId>org.springframework.boot</groupId> | ||
<artifactId>spring-boot-starter</artifactId> | ||
</dependency> | ||
|
||
<dependency> | ||
<groupId>org.projectlombok</groupId> | ||
<artifactId>lombok</artifactId> | ||
<optional>true</optional> | ||
</dependency> | ||
<dependency> | ||
<groupId>org.springframework.boot</groupId> | ||
<artifactId>spring-boot-starter-test</artifactId> | ||
<scope>test</scope> | ||
</dependency> | ||
<dependency> | ||
<groupId>org.testcontainers</groupId> | ||
<artifactId>testcontainers</artifactId> | ||
<version>1.19.7</version> | ||
<scope>test</scope> | ||
</dependency> | ||
<dependency> | ||
<groupId>org.testcontainers</groupId> | ||
<artifactId>junit-jupiter</artifactId> | ||
<version>1.19.7</version> | ||
<scope>test</scope> | ||
</dependency> | ||
</dependencies> | ||
``` | ||
|
||
Take the code | ||
in [MybatisPlusJavaApplicationTests.java](src/test/java/com/oceanbase/samples/mybatisplusjava/MybatisPlusJavaApplicationTests.java) | ||
as an example. | ||
|
||
The following code not only implements lifecycle management for the `OceanBaseCEContainer`. It will start the container | ||
instance before executing any test cases and stop it after all test cases are completed, and also uses | ||
ScriptUtils.executeSqlScript to perform database initialization SQL during the period. | ||
|
||
```java | ||
|
||
@SpringBootTest | ||
@Testcontainers | ||
class MybatisPlusJavaApplicationTests { | ||
|
||
@Container | ||
public static OceanBaseCEContainer oceanBaseContainer = new OceanBaseCEContainer(DockerImageName.parse("oceanbase/oceanbase-ce:latest")) | ||
.withEnv("MODE", "slim") | ||
.withEnv("FASTBOOT", "true"); | ||
@Autowired | ||
private PersonMapper personMapper; | ||
|
||
@DynamicPropertySource | ||
static void oceanBaseProperties(DynamicPropertyRegistry registry) { | ||
registry.add("spring.datasource.url", oceanBaseContainer::getJdbcUrl); | ||
registry.add("spring.datasource.username", oceanBaseContainer::getUsername); | ||
registry.add("spring.datasource.password", oceanBaseContainer::getPassword); | ||
registry.add("spring.datasource.driver-class-name", oceanBaseContainer::getDriverClassName); | ||
} | ||
|
||
@BeforeAll | ||
static void setup(@Autowired DataSource dataSource) throws Exception { | ||
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); | ||
assertNotNull(jdbcTemplate.getDataSource()); | ||
ScriptUtils.executeSqlScript(jdbcTemplate.getDataSource().getConnection(), new ClassPathResource("init.sql")); | ||
} | ||
} | ||
``` | ||
|
||
You can use MybatisPlus to operate the OceanBase instance in your test cases as follows: | ||
|
||
```java | ||
|
||
@Test | ||
void testSelectList() { | ||
List<Person> persons = personMapper.selectList(null); | ||
assertFalse(persons.isEmpty()); | ||
} | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,80 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0" | ||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> | ||
<modelVersion>4.0.0</modelVersion> | ||
<parent> | ||
<groupId>org.springframework.boot</groupId> | ||
<artifactId>spring-boot-starter-parent</artifactId> | ||
<version>2.7.17</version> | ||
<relativePath/> | ||
</parent> | ||
<groupId>com.oceanbase.samples</groupId> | ||
<artifactId>mybatisplus-java</artifactId> | ||
<version>0.0.1-SNAPSHOT</version> | ||
<name>mybatisplus-java</name> | ||
<description>mybatisplus-java</description> | ||
<dependencies> | ||
<dependency> | ||
<groupId>com.oceanbase</groupId> | ||
<artifactId>oceanbase-client</artifactId> | ||
<version>2.4.9</version> | ||
</dependency> | ||
<dependency> | ||
<groupId>org.testcontainers</groupId> | ||
<artifactId>oceanbase</artifactId> | ||
<version>1.19.7</version> | ||
<scope>test</scope> | ||
</dependency> | ||
<dependency> | ||
<groupId>com.baomidou</groupId> | ||
<artifactId>mybatis-plus-boot-starter</artifactId> | ||
<version>3.5.6</version> | ||
<scope>test</scope> | ||
</dependency> | ||
<dependency> | ||
<groupId>org.springframework.boot</groupId> | ||
<artifactId>spring-boot-starter</artifactId> | ||
</dependency> | ||
|
||
<dependency> | ||
<groupId>org.projectlombok</groupId> | ||
<artifactId>lombok</artifactId> | ||
<optional>true</optional> | ||
</dependency> | ||
<dependency> | ||
<groupId>org.springframework.boot</groupId> | ||
<artifactId>spring-boot-starter-test</artifactId> | ||
<scope>test</scope> | ||
</dependency> | ||
<dependency> | ||
<groupId>org.testcontainers</groupId> | ||
<artifactId>testcontainers</artifactId> | ||
<version>1.19.7</version> | ||
<scope>test</scope> | ||
</dependency> | ||
<dependency> | ||
<groupId>org.testcontainers</groupId> | ||
<artifactId>junit-jupiter</artifactId> | ||
<version>1.19.7</version> | ||
<scope>test</scope> | ||
</dependency> | ||
</dependencies> | ||
|
||
<build> | ||
<plugins> | ||
<plugin> | ||
<groupId>org.springframework.boot</groupId> | ||
<artifactId>spring-boot-maven-plugin</artifactId> | ||
<configuration> | ||
<excludes> | ||
<exclude> | ||
<groupId>org.projectlombok</groupId> | ||
<artifactId>lombok</artifactId> | ||
</exclude> | ||
</excludes> | ||
</configuration> | ||
</plugin> | ||
</plugins> | ||
</build> | ||
|
||
</project> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
#!/usr/bin/env bash | ||
mvn test |
13 changes: 13 additions & 0 deletions
13
...-java/src/test/java/com/oceanbase/samples/mybatisplusjava/MybatisPlusJavaApplication.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
package com.oceanbase.samples.mybatisplusjava; | ||
|
||
import org.springframework.boot.SpringApplication; | ||
import org.springframework.boot.autoconfigure.SpringBootApplication; | ||
|
||
@SpringBootApplication | ||
public class MybatisPlusJavaApplication { | ||
|
||
public static void main(String[] args) { | ||
SpringApplication.run(MybatisPlusJavaApplication.class, args); | ||
} | ||
|
||
} |
54 changes: 54 additions & 0 deletions
54
.../src/test/java/com/oceanbase/samples/mybatisplusjava/MybatisPlusJavaApplicationTests.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
package com.oceanbase.samples.mybatisplusjava; | ||
|
||
import org.junit.jupiter.api.BeforeAll; | ||
import org.junit.jupiter.api.Test; | ||
import org.springframework.beans.factory.annotation.Autowired; | ||
import org.springframework.boot.test.context.SpringBootTest; | ||
import org.springframework.core.io.ClassPathResource; | ||
import org.springframework.jdbc.core.JdbcTemplate; | ||
import org.springframework.jdbc.datasource.init.ScriptUtils; | ||
import org.springframework.test.context.DynamicPropertyRegistry; | ||
import org.springframework.test.context.DynamicPropertySource; | ||
import org.testcontainers.junit.jupiter.Container; | ||
import org.testcontainers.junit.jupiter.Testcontainers; | ||
import org.testcontainers.oceanbase.OceanBaseCEContainer; | ||
import org.testcontainers.utility.DockerImageName; | ||
|
||
import javax.sql.DataSource; | ||
import java.util.List; | ||
|
||
import static org.junit.jupiter.api.Assertions.assertFalse; | ||
import static org.junit.jupiter.api.Assertions.assertNotNull; | ||
|
||
@SpringBootTest | ||
@Testcontainers | ||
class MybatisPlusJavaApplicationTests { | ||
|
||
@Container | ||
public static OceanBaseCEContainer oceanBaseContainer = new OceanBaseCEContainer(DockerImageName.parse("oceanbase/oceanbase-ce:latest")) | ||
.withEnv("MODE", "slim") | ||
.withEnv("FASTBOOT", "true"); | ||
@Autowired | ||
private PersonMapper personMapper; | ||
|
||
@DynamicPropertySource | ||
static void oceanBaseProperties(DynamicPropertyRegistry registry) { | ||
registry.add("spring.datasource.url", oceanBaseContainer::getJdbcUrl); | ||
registry.add("spring.datasource.username", oceanBaseContainer::getUsername); | ||
registry.add("spring.datasource.password", oceanBaseContainer::getPassword); | ||
registry.add("spring.datasource.driver-class-name", oceanBaseContainer::getDriverClassName); | ||
} | ||
|
||
@BeforeAll | ||
static void setup(@Autowired DataSource dataSource) throws Exception { | ||
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); | ||
assertNotNull(jdbcTemplate.getDataSource()); | ||
ScriptUtils.executeSqlScript(jdbcTemplate.getDataSource().getConnection(), new ClassPathResource("init.sql")); | ||
} | ||
|
||
@Test | ||
void testSelectList() { | ||
List<Person> persons = personMapper.selectList(null); | ||
assertFalse(persons.isEmpty()); | ||
} | ||
} |
10 changes: 10 additions & 0 deletions
10
java/mybatisplus-java/src/test/java/com/oceanbase/samples/mybatisplusjava/Person.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
package com.oceanbase.samples.mybatisplusjava; | ||
|
||
import lombok.Data; | ||
|
||
@Data | ||
public class Person { | ||
private Integer id; | ||
private String name; | ||
private Integer age; | ||
} |
Oops, something went wrong.