增加spring boot mybatis 整合用例

This commit is contained in:
罗祥
2019-01-02 18:53:59 +08:00
parent 1caa454e62
commit 64296b35e6
11 changed files with 340 additions and 1 deletions

View File

@ -54,7 +54,7 @@ spring-cloudFinchley.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)<br/>[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) |

View File

@ -0,0 +1,56 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://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.1.1.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.heibaiying</groupId>
<artifactId>spring-boot-mybatis</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>spring-boot-mybatis</name>
<description>mybatis project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<!--spring 1.5 x 以上版本对应 mybatis 1.3.x (1.3.1)
关于更多spring-boot 与 mybatis 的版本对应可以参见 <a href="http://www.mybatis.org/spring-boot-starter/mybatis-spring-boot-autoconfigure/">-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<!--引入mysql驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.13</version>
</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>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>

View File

@ -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);
}
}

View File

@ -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;
}
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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
# <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD>Ļ<EFBFBD>,<2C><><EFBFBD>¹<EFBFBD><C2B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӳص<D3B3><D8B5><EFBFBD><EFBFBD>þͲ<C3BE><CDB2>DZ<EFBFBD><C7B1><EFBFBD><EFBFBD><EFBFBD>
# spring-boot 2 Ĭ<>ϲ<EFBFBD><CFB2>ø<EFBFBD><C3B8><EFBFBD><EFBFBD>ܵ<EFBFBD> Hikari <20><>Ϊ<EFBFBD><CEAA><EFBFBD>ӳ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF>Բο<D4B2> https://github.com/brettwooldridge/HikariCP#configuration-knobs-baby
type: com.zaxxer.hikari.HikariDataSource
hikari:
# <20><><EFBFBD><EFBFBD>ά<EFBFBD><CEAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
minimum-idle: 10
# <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>
maximum-pool-size: 20
# <20><><EFBFBD><EFBFBD><EFBFBD>Կ<EFBFBD><D4BF>ƴӳط<D3B3><D8B7>ص<EFBFBD><D8B5><EFBFBD><EFBFBD>ӵ<EFBFBD>Ĭ<EFBFBD><C4AC><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><E1BDBB>Ϊ<EFBFBD><CEAA>Ĭ<EFBFBD><C4AC>Ϊtrue
auto-commit: true
# <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EEB3A4><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
idle-timeout: 30000
# <20><><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD>ʾ<EFBFBD><CABE><EFBFBD>ӳص<D3B3><D8B5>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD><C6A3><EFBFBD>Ҫ<EFBFBD><D2AA>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>־<EFBFBD><D6BE>¼<EFBFBD><C2BC>JMX<4D><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD>У<EFBFBD><D0A3>Ա<EFBFBD>ʶ<EFBFBD>غͳ<D8BA><CDB3><EFBFBD><EFBFBD>á<EFBFBD> Ĭ<><C4AC>ֵ<EFBFBD><D6B5><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>
pool-name: custom-hikari
#<23><><EFBFBD><EFBFBD><EFBFBD>Կ<EFBFBD><D4BF>Ƴ<EFBFBD><C6B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD><EEB3A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD>ֵ0<D6B5><30>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD>Ĭ<EFBFBD><C4AC>1800000<30><30>30<33><30><EFBFBD><EFBFBD>
max-lifetime: 1800000
# <20><><EFBFBD>ݿ<EFBFBD><DDBF><EFBFBD><EFBFBD>ӳ<EFBFBD>ʱʱ<CAB1><CAB1><><C4AC>30<33><EFBFBD><EBA3AC>30000
connection-timeout: 30000
# <20><><EFBFBD>Ӳ<EFBFBD><D3B2><EFBFBD>sql <20><><EFBFBD><EFBFBD><EFBFBD>ط<EFBFBD><D8B7><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿⷽ<DDBF>Բ<EFBFBD><D4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> oracle <20><>Ӧ<EFBFBD><D3A6>д<EFBFBD><D0B4> select 1 from dual
connection-test-query: SELECT 1
# mybatis <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
mybatis:
# ָ<><D6B8> sql xml <20>ļ<EFBFBD><C4BC><EFBFBD>λ<EFBFBD><CEBB>
mapper-locations: classpath*:mappers/*.xml
configuration:
# <20><>û<EFBFBD><C3BB>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ض<EFBFBD><D8B6><EFBFBD> JDBC <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>Ϊ<EFBFBD><CEAA>ֵָ<D6B5><D6B8> JDBC <20><><EFBFBD>͡<EFBFBD>
# oracle<6C><65><EFBFBD>ݿ⽨<DDBF><E2BDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪJdbcType.NULL, Ĭ<><C4AC><EFBFBD><EFBFBD>Other
jdbc-type-for-null: 'null'
# <20>Ƿ<EFBFBD><C7B7><EFBFBD>ӡsql<71><6C><EFBFBD><EFBFBD> <20><><EFBFBD>Ե<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>Կ<EFBFBD><D4BF><EFBFBD>
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
# ע 1
# oracle
# driver="oracle.jdbc.driver.OracleDriver"
# url="jdbc:oracle:thin:@localhost:1521:<3A><><EFBFBD>ݿ<EFBFBD><DDBF><EFBFBD>"
# mysql
# driver="com.mysql.jdbc.Driver"
# url="jdbc:mysql://localhost/<2F><><EFBFBD>ݿ<EFBFBD><DDBF><EFBFBD>?[<5B><><EFBFBD>Ӳ<EFBFBD><D3B2><EFBFBD>]"
# ע 2
# mybatis <20><><EFBFBD>ø<EFBFBD><C3B8><EFBFBD>˵<EFBFBD><CBB5><EFBFBD><EFBFBD><EFBFBD>Բο<D4B2>settings http://www.mybatis.org/mybatis-3/zh/configuration.html
# ע 3
# spring boot 2.0 Ĭ<>ϲ<EFBFBD><CFB2><EFBFBD>Hikari <20><>Ϊ<EFBFBD><CEAA><EFBFBD>ӳ<EFBFBD> github<75><62>ַ https://github.com/brettwooldridge/HikariCP

View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.heibaiying.springboot.dao.ProgrammerMapper">
<insert id="save">
insert into programmer (name, age, salary, birthday) VALUES (#{name}, #{age}, #{salary}, #{birthday})
</insert>
<select id="selectById" resultType="com.heibaiying.springboot.bean.Programmer">
select * from programmer where name = #{id}
</select>
<update id="modify">
update programmer set name=#{name},age=#{age},salary=#{salary},birthday=#{birthday} where id=#{id}
</update>
<delete id="delete">
delete from programmer where id = #{id}
</delete>
</mapper>

View File

@ -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
)

View File

@ -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);
}
}

View File

@ -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);
}
}