From 64296b35e61811ac4e389328ff01c88b69d36e40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BD=97=E7=A5=A5?= <1366971433@qq.com> Date: Wed, 2 Jan 2019 18:53:59 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0spring=20boot=20mybatis=20?= =?UTF-8?q?=E6=95=B4=E5=90=88=E7=94=A8=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- spring-boot/spring-boot-mybatis/pom.xml | 56 +++++++++++++++++++ .../SpringBootMybatisApplication.java | 14 +++++ .../springboot/bean/Programmer.java | 38 +++++++++++++ .../springboot/dao/ProgrammerDao.java | 25 +++++++++ .../springboot/dao/ProgrammerMapper.java | 22 ++++++++ .../src/main/resources/application.yml | 55 ++++++++++++++++++ .../resources/mappers/ProgrammerMapper.xml | 22 ++++++++ .../src/main/resources/sql/programmer.sql | 8 +++ .../springboot/MybatisAnnotationTest.java | 49 ++++++++++++++++ .../heibaiying/springboot/MybatisXmlTest.java | 50 +++++++++++++++++ 11 files changed, 340 insertions(+), 1 deletion(-) create mode 100644 spring-boot/spring-boot-mybatis/pom.xml create mode 100644 spring-boot/spring-boot-mybatis/src/main/java/com/heibaiying/springboot/SpringBootMybatisApplication.java create mode 100644 spring-boot/spring-boot-mybatis/src/main/java/com/heibaiying/springboot/bean/Programmer.java create mode 100644 spring-boot/spring-boot-mybatis/src/main/java/com/heibaiying/springboot/dao/ProgrammerDao.java create mode 100644 spring-boot/spring-boot-mybatis/src/main/java/com/heibaiying/springboot/dao/ProgrammerMapper.java create mode 100644 spring-boot/spring-boot-mybatis/src/main/resources/application.yml create mode 100644 spring-boot/spring-boot-mybatis/src/main/resources/mappers/ProgrammerMapper.xml create mode 100644 spring-boot/spring-boot-mybatis/src/main/resources/sql/programmer.sql create mode 100644 spring-boot/spring-boot-mybatis/src/test/java/com/heibaiying/springboot/MybatisAnnotationTest.java create mode 100644 spring-boot/spring-boot-mybatis/src/test/java/com/heibaiying/springboot/MybatisXmlTest.java 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); + } +} +