diff --git a/README.md b/README.md
index 16bb6b8..1727bdc 100644
--- a/README.md
+++ b/README.md
@@ -33,6 +33,7 @@ Spring Boot 使用的各种示例,以最简单、最实用为标准,此开
- [spring-boot-webflux](https://github.com/ityouknow/spring-boot-examples/tree/master/spring-boot-webflux) :Spring Boot webflux 示例
- [spring-boot-elasticsearch](https://github.com/ityouknow/spring-boot-examples/tree/master/spring-boot-elasticsearch) :Spring Boot elasticsearch 示例
- [spring-boot-swagger](https://github.com/ityouknow/spring-boot-examples/tree/master/spring-boot-swagger) :Spring Boot swagger2 示例
+- [spring-boot-mybatis-plus](https://github.com/ityouknow/spring-boot-examples/tree/master/spring-boot-mybatis-plus) :Spring Boot 集成 MyBatis Plus 示例
**参考文章**
diff --git a/README_EN.md b/README_EN.md
index 3e6d607..62b2fe3 100644
--- a/README_EN.md
+++ b/README_EN.md
@@ -23,6 +23,9 @@ Spring Boot examples, using the simplest and the most useful scene demos.
- [spring-boot-webflux](https://github.com/ityouknow/spring-boot-examples/tree/master/spring-boot-webflux) :Spring Boot webflux demo
- [spring-boot-elasticsearch](https://github.com/ityouknow/spring-boot-examples/tree/master/spring-boot-elasticsearch) :Spring Boot elasticsearch demo
- [spring-boot-swagger](https://github.com/ityouknow/spring-boot-examples/tree/master/spring-boot-swagger) :Spring Boot swagger2 demo
+- [spring-boot-mybatis-plus](https://github.com/ityouknow/spring-boot-examples/tree/master/spring-boot-mybatis-plus) :Spring Boot MyBatis Plus demo
+
+
---
## Spring Boot (Already upgraded to 2.x)
diff --git a/spring-boot-mybatis-plus/pom.xml b/spring-boot-mybatis-plus/pom.xml
new file mode 100644
index 0000000..6f08877
--- /dev/null
+++ b/spring-boot-mybatis-plus/pom.xml
@@ -0,0 +1,58 @@
+
+
+ 4.0.0
+
+ com.example
+ spring-boot-mybatis-plus
+ 1.0.0
+ jar
+
+ Spring Boot MyBatis Plus
+ Spring Boot 2 Demo
+
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ 2.1.4.RELEASE
+
+
+
+ UTF-8
+ UTF-8
+ 1.8
+
+
+
+
+ org.projectlombok
+ lombok
+ true
+
+
+ com.baomidou
+ mybatis-plus-boot-starter
+ 3.1.1
+
+
+ com.h2database
+ h2
+ runtime
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+
+
diff --git a/spring-boot-mybatis-plus/src/main/java/com/neo/MyBatisPlusApplication.java b/spring-boot-mybatis-plus/src/main/java/com/neo/MyBatisPlusApplication.java
new file mode 100644
index 0000000..8cadbf0
--- /dev/null
+++ b/spring-boot-mybatis-plus/src/main/java/com/neo/MyBatisPlusApplication.java
@@ -0,0 +1,12 @@
+package com.neo;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class MyBatisPlusApplication {
+
+ public static void main(String[] args) {
+ SpringApplication.run(MyBatisPlusApplication.class, args);
+ }
+}
diff --git a/spring-boot-mybatis-plus/src/main/java/com/neo/config/MybatisPlusConfig.java b/spring-boot-mybatis-plus/src/main/java/com/neo/config/MybatisPlusConfig.java
new file mode 100644
index 0000000..914ffbb
--- /dev/null
+++ b/spring-boot-mybatis-plus/src/main/java/com/neo/config/MybatisPlusConfig.java
@@ -0,0 +1,19 @@
+package com.neo.config;
+
+import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+@MapperScan("com.neo.mapper")
+public class MybatisPlusConfig {
+
+ /**
+ * 分页插件
+ */
+ @Bean
+ public PaginationInterceptor paginationInterceptor() {
+ return new PaginationInterceptor();
+ }
+}
\ No newline at end of file
diff --git a/spring-boot-mybatis-plus/src/main/java/com/neo/mapper/UserMapper.java b/spring-boot-mybatis-plus/src/main/java/com/neo/mapper/UserMapper.java
new file mode 100644
index 0000000..227c33c
--- /dev/null
+++ b/spring-boot-mybatis-plus/src/main/java/com/neo/mapper/UserMapper.java
@@ -0,0 +1,8 @@
+package com.neo.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.neo.model.User;
+
+public interface UserMapper extends BaseMapper {
+
+}
\ No newline at end of file
diff --git a/spring-boot-mybatis-plus/src/main/java/com/neo/model/User.java b/spring-boot-mybatis-plus/src/main/java/com/neo/model/User.java
new file mode 100644
index 0000000..0cf4ecc
--- /dev/null
+++ b/spring-boot-mybatis-plus/src/main/java/com/neo/model/User.java
@@ -0,0 +1,11 @@
+package com.neo.model;
+
+import lombok.Data;
+
+@Data
+public class User {
+ private Long id;
+ private String name;
+ private Integer age;
+ private String email;
+}
\ No newline at end of file
diff --git a/spring-boot-mybatis-plus/src/main/resources/application.yml b/spring-boot-mybatis-plus/src/main/resources/application.yml
new file mode 100644
index 0000000..46530ce
--- /dev/null
+++ b/spring-boot-mybatis-plus/src/main/resources/application.yml
@@ -0,0 +1,14 @@
+# DataSource Config
+spring:
+ datasource:
+ driver-class-name: org.h2.Driver
+ schema: classpath:db/schema-h2.sql
+ data: classpath:db/data-h2.sql
+ url: jdbc:h2:mem:test
+ username: root
+ password: test
+
+# Logger Config
+logging:
+ level:
+ com.neo: debug
diff --git a/spring-boot-mybatis-plus/src/main/resources/db/data-h2.sql b/spring-boot-mybatis-plus/src/main/resources/db/data-h2.sql
new file mode 100644
index 0000000..7e97dbd
--- /dev/null
+++ b/spring-boot-mybatis-plus/src/main/resources/db/data-h2.sql
@@ -0,0 +1,8 @@
+DELETE FROM user;
+
+INSERT INTO user (id, name, age, email) VALUES
+(1, 'neo', 18, 'smile1@ityouknow.com'),
+(2, 'keep', 36, 'smile@ityouknow.com'),
+(3, 'pure', 28, 'smile@ityouknow.com'),
+(4, 'smile', 21, 'smile@ityouknow.com'),
+(5, 'it', 24, 'smile@ityouknow.com');
\ No newline at end of file
diff --git a/spring-boot-mybatis-plus/src/main/resources/db/schema-h2.sql b/spring-boot-mybatis-plus/src/main/resources/db/schema-h2.sql
new file mode 100644
index 0000000..baa5a61
--- /dev/null
+++ b/spring-boot-mybatis-plus/src/main/resources/db/schema-h2.sql
@@ -0,0 +1,10 @@
+DROP TABLE IF EXISTS user;
+
+CREATE TABLE user
+(
+ id BIGINT(20) NOT NULL COMMENT '主键ID',
+ name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',
+ age INT(11) NULL DEFAULT NULL COMMENT '年龄',
+ email VARCHAR(50) NULL DEFAULT NULL COMMENT '邮箱',
+ PRIMARY KEY (id)
+);
\ No newline at end of file
diff --git a/spring-boot-mybatis-plus/src/test/java/com/neo/MyBatisPlusApplicationTests.java b/spring-boot-mybatis-plus/src/test/java/com/neo/MyBatisPlusApplicationTests.java
new file mode 100644
index 0000000..1eaf285
--- /dev/null
+++ b/spring-boot-mybatis-plus/src/test/java/com/neo/MyBatisPlusApplicationTests.java
@@ -0,0 +1,16 @@
+package com.neo;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest
+public class MyBatisPlusApplicationTests {
+
+ @Test
+ public void contextLoads() {
+ }
+
+}
diff --git a/spring-boot-mybatis-plus/src/test/java/com/neo/MyBatisPlusTest.java b/spring-boot-mybatis-plus/src/test/java/com/neo/MyBatisPlusTest.java
new file mode 100644
index 0000000..d682335
--- /dev/null
+++ b/spring-boot-mybatis-plus/src/test/java/com/neo/MyBatisPlusTest.java
@@ -0,0 +1,102 @@
+package com.neo;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.neo.mapper.UserMapper;
+import com.neo.model.User;
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import java.util.List;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest
+public class MyBatisPlusTest {
+
+ @Autowired
+ private UserMapper userMapper;
+
+
+ @Test
+ public void testSelectOne() {
+ User user = userMapper.selectById(1L);
+ System.out.println(user);
+ }
+
+ @Test
+ public void testInsert() {
+ User user = new User();
+ user.setName("微笑");
+ user.setAge(3);
+ user.setEmail("neo@tooool.org");
+ assertThat(userMapper.insert(user)).isGreaterThan(0);
+ // 成功直接拿会写的 ID
+ assertThat(user.getId()).isNotNull();
+ }
+
+ @Test
+ public void testDelete() {
+ assertThat(userMapper.deleteById(3L)).isGreaterThan(0);
+ assertThat(userMapper.delete(new QueryWrapper()
+ .lambda().eq(User::getName, "smile"))).isGreaterThan(0);
+ }
+
+ @Test
+ public void testUpdate() {
+ User user = userMapper.selectById(2);
+ assertThat(user.getAge()).isEqualTo(36);
+ assertThat(user.getName()).isEqualTo("keep");
+
+ userMapper.update(
+ null,
+ Wrappers.lambdaUpdate().set(User::getEmail, "123@123").eq(User::getId, 2)
+ );
+ assertThat(userMapper.selectById(2).getEmail()).isEqualTo("123@123");
+ }
+
+ @Test
+ public void testSelect() {
+ List userList = userMapper.selectList(null);
+ Assert.assertEquals(5, userList.size());
+ userList.forEach(System.out::println);
+ }
+
+ @Test
+ public void testSelectCondition() {
+ QueryWrapper wrapper = new QueryWrapper<>();
+ wrapper.select("max(id) as id");
+ List userList = userMapper.selectList(wrapper);
+ userList.forEach(System.out::println);
+ }
+
+ @Test
+ public void testPage() {
+ System.out.println("----- baseMapper 自带分页 ------");
+ Page page = new Page<>(1, 2);
+ IPage userIPage = userMapper.selectPage(page, new QueryWrapper()
+ .gt("age", 6));
+ assertThat(page).isSameAs(userIPage);
+ System.out.println("总条数 ------> " + userIPage.getTotal());
+ System.out.println("当前页数 ------> " + userIPage.getCurrent());
+ System.out.println("当前每页显示数 ------> " + userIPage.getSize());
+ print(userIPage.getRecords());
+ System.out.println("----- baseMapper 自带分页 ------");
+ }
+
+ private void print(List list) {
+ if (!CollectionUtils.isEmpty(list)) {
+ list.forEach(System.out::println);
+ }
+ }
+
+
+}
\ No newline at end of file