diff --git a/README.md b/README.md
index 350807d..1cbe667 100644
--- a/README.md
+++ b/README.md
@@ -54,7 +54,7 @@ spring-cloud:Finchley.SR2
| [spring-boot-tomcat](https://github.com/heibaiying/spring-samples-for-all/tree/master/spring-boot/spring-boot-tomcat) | spring-boot 整合外部容器(tomcat) | [Use Another Web Server](https://docs.spring.io/spring-boot/docs/2.1.1.RELEASE/reference/htmlsingle/#howto-use-another-web-server) |
| [spring-boot-jsp](https://github.com/heibaiying/spring-samples-for-all/tree/master/spring-boot/spring-boot-jsp) | spring-boot 整合 jsp | [JSP Limitations](https://docs.spring.io/spring-boot/docs/2.1.1.RELEASE/reference/htmlsingle/#boot-features-jsp-limitations) |
| spring-boot-jpa | spring-boot jpa 的使用 | [Spring Data JPA](https://docs.spring.io/spring-data/jpa/docs/2.1.3.RELEASE/reference/html/) |
-| spring-boot-mybatis | spring-boot 整合 mybatis | [Mybatis-Spring](http://www.mybatis.org/spring/zh/index.html) |
+| spring-boot-mybatis | spring-boot 整合 mybatis | [Mybatis-Spring](http://www.mybatis.org/spring/zh/index.html)
[Mybatis-Spring-Boot-Autoconfigure](http://www.mybatis.org/spring-boot-starter/mybatis-spring-boot-autoconfigure/) |
| spring-boot-druid-mybtais | spring-boot 整合druid、mybatis | [Alibaba druid](https://github.com/alibaba/druid/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98) |
| [spring-boot-redis](https://github.com/heibaiying/spring-samples-for-all/tree/master/spring-boot/spring-boot-redis) | spring-boot 整合 redis | [Working with NoSQL Technologies](https://docs.spring.io/spring-boot/docs/2.1.1.RELEASE/reference/htmlsingle/#boot-features-nosql) |
| [spring-boot-mongodb](https://github.com/heibaiying/spring-samples-for-all/tree/master/spring-boot/spring-boot-mongodb) | spring-boot 整合 mongodb | [Working with NoSQL Technologies](https://docs.spring.io/spring-boot/docs/2.1.1.RELEASE/reference/htmlsingle/#boot-features-nosql) |
diff --git a/spring-boot/spring-boot-mybatis/pom.xml b/spring-boot/spring-boot-mybatis/pom.xml
new file mode 100644
index 0000000..a365ac5
--- /dev/null
+++ b/spring-boot/spring-boot-mybatis/pom.xml
@@ -0,0 +1,56 @@
+
+
+ 4.0.0
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ 2.1.1.RELEASE
+
+
+ com.heibaiying
+ spring-boot-mybatis
+ 0.0.1-SNAPSHOT
+ spring-boot-mybatis
+ mybatis project for Spring Boot
+
+
+ 1.8
+
+
+
+
+
+ org.mybatis.spring.boot
+ mybatis-spring-boot-starter
+ 1.3.2
+
+
+
+ mysql
+ mysql-connector-java
+ 8.0.13
+
+
+ org.projectlombok
+ lombok
+ true
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+
+
diff --git a/spring-boot/spring-boot-mybatis/src/main/java/com/heibaiying/springboot/SpringBootMybatisApplication.java b/spring-boot/spring-boot-mybatis/src/main/java/com/heibaiying/springboot/SpringBootMybatisApplication.java
new file mode 100644
index 0000000..21da69f
--- /dev/null
+++ b/spring-boot/spring-boot-mybatis/src/main/java/com/heibaiying/springboot/SpringBootMybatisApplication.java
@@ -0,0 +1,14 @@
+package com.heibaiying.springboot;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class SpringBootMybatisApplication {
+
+ public static void main(String[] args) {
+ SpringApplication.run(SpringBootMybatisApplication.class, args);
+ }
+
+}
+
diff --git a/spring-boot/spring-boot-mybatis/src/main/java/com/heibaiying/springboot/bean/Programmer.java b/spring-boot/spring-boot-mybatis/src/main/java/com/heibaiying/springboot/bean/Programmer.java
new file mode 100644
index 0000000..fbb468b
--- /dev/null
+++ b/spring-boot/spring-boot-mybatis/src/main/java/com/heibaiying/springboot/bean/Programmer.java
@@ -0,0 +1,38 @@
+package com.heibaiying.springboot.bean;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.ToString;
+
+import java.util.Date;
+
+/**
+ * @author : heibaiying
+ * @description : 实体类
+ */
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@ToString
+public class Programmer {
+
+ private int id;
+
+ private String name;
+
+ private int age;
+
+ private float salary;
+
+ private Date birthday;
+
+ public Programmer(String name, int age, float salary, Date birthday) {
+ this.name = name;
+ this.age = age;
+ this.salary = salary;
+ this.birthday = birthday;
+ }
+
+}
diff --git a/spring-boot/spring-boot-mybatis/src/main/java/com/heibaiying/springboot/dao/ProgrammerDao.java b/spring-boot/spring-boot-mybatis/src/main/java/com/heibaiying/springboot/dao/ProgrammerDao.java
new file mode 100644
index 0000000..d8a35a3
--- /dev/null
+++ b/spring-boot/spring-boot-mybatis/src/main/java/com/heibaiying/springboot/dao/ProgrammerDao.java
@@ -0,0 +1,25 @@
+package com.heibaiying.springboot.dao;
+
+import com.heibaiying.springboot.bean.Programmer;
+import org.apache.ibatis.annotations.*;
+
+import java.util.List;
+
+/**
+ * @author : heibaiying
+ */
+@Mapper
+public interface ProgrammerDao {
+
+ @Insert("insert into programmer (name, age, salary, birthday) VALUES (#{name}, #{age}, #{salary}, #{birthday})")
+ void save(Programmer programmer);
+
+ @Select("select * from programmer where name = #{id}")
+ Programmer selectById(int id);
+
+ @Update("update programmer set name=#{name},age=#{age},salary=#{salary},birthday=#{birthday} where id=#{id}")
+ int modify(Programmer programmer);
+
+ @Delete(" delete from programmer where id = #{id}")
+ void delete(int id);
+}
diff --git a/spring-boot/spring-boot-mybatis/src/main/java/com/heibaiying/springboot/dao/ProgrammerMapper.java b/spring-boot/spring-boot-mybatis/src/main/java/com/heibaiying/springboot/dao/ProgrammerMapper.java
new file mode 100644
index 0000000..6c769c8
--- /dev/null
+++ b/spring-boot/spring-boot-mybatis/src/main/java/com/heibaiying/springboot/dao/ProgrammerMapper.java
@@ -0,0 +1,22 @@
+package com.heibaiying.springboot.dao;
+
+import com.heibaiying.springboot.bean.Programmer;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+ * @author : heibaiying
+ */
+
+@Mapper
+public interface ProgrammerMapper {
+
+ void save(Programmer programmer);
+
+ Programmer selectById(int id);
+
+ int modify(Programmer programmer);
+
+ void delete(int id);
+}
diff --git a/spring-boot/spring-boot-mybatis/src/main/resources/application.yml b/spring-boot/spring-boot-mybatis/src/main/resources/application.yml
new file mode 100644
index 0000000..06b8071
--- /dev/null
+++ b/spring-boot/spring-boot-mybatis/src/main/resources/application.yml
@@ -0,0 +1,55 @@
+spring:
+ datasource:
+ url: jdbc:mysql://127.0.0.1:3306/mysql?useUnicode=true&characterEncoding=utf-8
+ username: root
+ password: root
+ driver-class-name: com.mysql.cj.jdbc.Driver
+
+ # ԴĻ,¹ӳصþͲDZ
+ # spring-boot 2 Ĭϲøܵ Hikari Ϊӳ ÿԲο https://github.com/brettwooldridge/HikariCP#configuration-knobs-baby
+ type: com.zaxxer.hikari.HikariDataSource
+ hikari:
+ # άС
+ minimum-idle: 10
+ # úʹе
+ maximum-pool-size: 20
+ # ԿƴӳطصӵĬԶύΪĬΪtrue
+ auto-commit: true
+ # ʱ
+ idle-timeout: 30000
+ # ԱʾӳصûƣҪʾ־¼JMX̨УԱʶغͳá ĬֵԶ
+ pool-name: custom-hikari
+ #ԿƳӵڣֵ0ʾڣĬ180000030
+ max-lifetime: 1800000
+ # ݿӳʱʱ,Ĭ30룬30000
+ connection-timeout: 30000
+ # Ӳsql طҪݿⷽԲ oracle Ӧд select 1 from dual
+ connection-test-query: SELECT 1
+
+# mybatis
+mybatis:
+ # ָ sql xml ļλ
+ mapper-locations: classpath*:mappers/*.xml
+ configuration:
+ # ûΪṩض JDBC ʱΪֵָ JDBC ͡
+ # oracleݿ⽨ΪJdbcType.NULL, ĬOther
+ jdbc-type-for-null: 'null'
+ # Ƿӡsql ԵʱԿ
+ log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+
+
+# ע 1
+ # oracle
+ # driver="oracle.jdbc.driver.OracleDriver"
+ # url="jdbc:oracle:thin:@localhost:1521:ݿ"
+ # mysql
+ # driver="com.mysql.jdbc.Driver"
+ # url="jdbc:mysql://localhost/ݿ?[Ӳ]"
+
+
+# ע 2
+ # mybatis ø˵Բοsettings http://www.mybatis.org/mybatis-3/zh/configuration.html
+
+
+# ע 3
+ # spring boot 2.0 ĬϲHikari Ϊӳ githubַ https://github.com/brettwooldridge/HikariCP
\ No newline at end of file
diff --git a/spring-boot/spring-boot-mybatis/src/main/resources/mappers/ProgrammerMapper.xml b/spring-boot/spring-boot-mybatis/src/main/resources/mappers/ProgrammerMapper.xml
new file mode 100644
index 0000000..4114c45
--- /dev/null
+++ b/spring-boot/spring-boot-mybatis/src/main/resources/mappers/ProgrammerMapper.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+ insert into programmer (name, age, salary, birthday) VALUES (#{name}, #{age}, #{salary}, #{birthday})
+
+
+
+
+
+ update programmer set name=#{name},age=#{age},salary=#{salary},birthday=#{birthday} where id=#{id}
+
+
+
+ delete from programmer where id = #{id}
+
+
+
\ No newline at end of file
diff --git a/spring-boot/spring-boot-mybatis/src/main/resources/sql/programmer.sql b/spring-boot/spring-boot-mybatis/src/main/resources/sql/programmer.sql
new file mode 100644
index 0000000..71840fe
--- /dev/null
+++ b/spring-boot/spring-boot-mybatis/src/main/resources/sql/programmer.sql
@@ -0,0 +1,8 @@
+-- 建表语句
+create table if not exists programmer (
+ id int primary key auto_increment,
+ name varchar(20),
+ age tinyint,
+ salary float,
+ birthday datetime
+)
\ No newline at end of file
diff --git a/spring-boot/spring-boot-mybatis/src/test/java/com/heibaiying/springboot/MybatisAnnotationTest.java b/spring-boot/spring-boot-mybatis/src/test/java/com/heibaiying/springboot/MybatisAnnotationTest.java
new file mode 100644
index 0000000..20cbec3
--- /dev/null
+++ b/spring-boot/spring-boot-mybatis/src/test/java/com/heibaiying/springboot/MybatisAnnotationTest.java
@@ -0,0 +1,49 @@
+package com.heibaiying.springboot;
+
+import com.heibaiying.springboot.bean.Programmer;
+import com.heibaiying.springboot.dao.ProgrammerDao;
+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.Date;
+
+/***
+ * @description: 注解Sql测试类
+ */
+@RunWith(SpringRunner.class)
+@SpringBootTest
+public class MybatisAnnotationTest {
+
+ @Autowired
+ private ProgrammerDao programmerDao;
+
+ @Test
+ public void save() {
+ programmerDao.save(new Programmer("xiaominng", 12, 3467.34f, new Date()));
+ programmerDao.save(new Programmer("xiaominng", 12, 3467.34f, new Date()));
+ }
+
+ @Test
+ public void modify() {
+ programmerDao.modify(new Programmer(1, "xiaolan", 21, 347.34f, new Date()));
+ }
+
+ @Test
+ public void selectByCondition() {
+ Programmer programmers = programmerDao.selectById(1);
+ System.out.println(programmers);
+ }
+
+ @Test
+ public void delete() {
+ programmerDao.delete(3);
+ Programmer programmers = programmerDao.selectById(3);
+ Assert.assertNull(programmers);
+ }
+
+}
+
diff --git a/spring-boot/spring-boot-mybatis/src/test/java/com/heibaiying/springboot/MybatisXmlTest.java b/spring-boot/spring-boot-mybatis/src/test/java/com/heibaiying/springboot/MybatisXmlTest.java
new file mode 100644
index 0000000..36e6c1a
--- /dev/null
+++ b/spring-boot/spring-boot-mybatis/src/test/java/com/heibaiying/springboot/MybatisXmlTest.java
@@ -0,0 +1,50 @@
+package com.heibaiying.springboot;
+
+import com.heibaiying.springboot.bean.Programmer;
+import com.heibaiying.springboot.dao.ProgrammerDao;
+import com.heibaiying.springboot.dao.ProgrammerMapper;
+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.Date;
+import java.util.List;
+
+/***
+ * @description: xml Sql测试类
+ */
+@RunWith(SpringRunner.class)
+@SpringBootTest
+public class MybatisXmlTest {
+
+ @Autowired
+ private ProgrammerMapper mapper;
+
+ @Test
+ public void save() {
+ mapper.save(new Programmer("xiaominng", 12, 3467.34f, new Date()));
+ mapper.save(new Programmer("xiaominng", 12, 3467.34f, new Date()));
+ }
+
+ @Test
+ public void modify() {
+ mapper.modify(new Programmer(1, "xiaohong", 112, 347.34f, new Date()));
+ }
+
+ @Test
+ public void selectByCondition() {
+ Programmer programmers = mapper.selectById(1);
+ System.out.println(programmers);
+ }
+
+ @Test
+ public void delete() {
+ mapper.delete(2);
+ Programmer programmers = mapper.selectById(2);
+ Assert.assertNull(programmers);
+ }
+}
+