SpringBoot集成Mybatis
2017-11-17 14:09
459 查看
起头自述
本文主要是参考spring-boot-starter 的xml方式的集成方式,在此之前我也曾在网上找过很多集成的例子,有很多还是以mybatis-spring的方式来集成,也曾遇到过很多问题,所以推荐大家参考该项目(github/mybatis/spring-boot-starter )进行取舍。
SpringBoot集成Mybatis
1.首先创建一个maven quickstart 项目。创建好后结构目录如下。
maven的quickstart项目默认没有resources源文件目录,因此我们需要自己创建(
2.修改pom.xml并添加相应的依赖,完整版如下
3.在
4.日志文件配置-在
5.在
6.根据第5步中的mapper名称在
7.在这里插入一下ha~~先创建数据库和数据表,完整sql如下
8.在Java源文件目录
9.在Java源文件目录
10.在Java源文件目录
11.创建测试类 - 在
12.运行测试类结果如下(部分)
最后附完整项目结构图
项目资源地址
springboot-sample-demo
本文主要是参考spring-boot-starter 的xml方式的集成方式,在此之前我也曾在网上找过很多集成的例子,有很多还是以mybatis-spring的方式来集成,也曾遇到过很多问题,所以推荐大家参考该项目(github/mybatis/spring-boot-starter )进行取舍。
SpringBoot集成Mybatis
1.首先创建一个maven quickstart 项目。创建好后结构目录如下。
maven的quickstart项目默认没有resources源文件目录,因此我们需要自己创建(
项目右键-build Path-configure...-source栏目-Add Folder...)创建
src/main/resources源文件目录建好之后目录结构如下
2.修改pom.xml并添加相应的依赖,完整版如下
<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> <groupId>com.sample</groupId> <artifactId>springboot-mybatis-sample</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>springboot-mybatis-sample</name> <url>http://maven.apache.org</url> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.8.RELEASE</version> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <java.version>1.8</java.version> </properties> <dependencies> <!-- SpringBoot web starter,web项目依赖包 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <!-- 若是使用默认logback日志,请自行移除exclusions块,该块排除默认日志包 --> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </exclusion> </exclusions> </dependency> <!-- Mybatis Starter依赖包 --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <!-- 除此处需要制定版本以外,其他各依赖包均无需指定版本信息,Springboot会自动添加合适版本 --> <version>1.3.1</version> <!-- 若是使用默认logback日志,请自行移除exclusions块,该块排除默认日志包 --> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </exclusion> </exclusions> </dependency> <!-- MySQL Connector --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <!-- 读取yml配置文件需要的依赖包 --> <dependency> <groupId>com.fasterxml.jackson.dataformat</groupId> <artifactId>jackson-dataformat-yaml</artifactId> </dependency> <!--Log4j2 依赖Starter,此处不采用默认的Logback,视个人项目需求而定 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-log4j2</artifactId> </dependency> <!--Log4j Web容器日志依赖 --> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-web</artifactId> </dependency> <!--单元测试依赖 --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <scope>test</scope> </dependency> <!-- Spring Boot测试依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <!-- 这是为了防止maven构建eclipse或者idea项目出错需要指定源文件目录和配置文件目录 --> <sourceDirectory>src/main/java</sourceDirectory> <resources> <resource> <directory>src/main/resources</directory> </resource> </resources> <plugins> <!-- SpringBoot项目所需要依赖的插件,该插件主要用于打包Springboot项目 --> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
3.在
src/main/resources下添加
application.yml配置如下(切记,该配置下,配置文件中不能以tab代替空格,否则出错)
server: port: 8089 spring: datasource: url: jdbc:mysql://localhost:3306/sample?useSSL=false&characterEncoding=UTF-8 # 请根据自己的数据库做相应更改 username: root password: 123456 driver-class-name: com.mysql.jdbc.Driver # tomcat连接池配置 tomcat: max-wait: 10000 max-active: 50 test-on-borrow: true # mybatis 配置 mybatis: config-location: classpath:mybatis-config.xml
4.日志文件配置-在
src/main/resources下配置
log4j2.yml
Configuration: status: INFO name: Log4j2 Yaml Config properties: property: - name: ArchiveFileName value: logs/archive/ - name: filename value: logs/example Appenders: # 日志打印到Console Console: - name: DefaultConsoleAppender target: SYSTEM_OUT PatternLayout: pattern: | %highlight{%d [%t] %-5level: %msg%throwable} - name: TraceDataAccessAction target: SYSTEM_OUT PatternLayout: pattern: | %highlight{%d [%t] %-5level: %msg%throwable} # 日志记录到文件 File: - name: DefaultFileAppender fileName: ${filename}-all.log PatternLayout: pattern: | %date-%-5level-%msg Filters: ThresholdFilter: level: INFO - name: WarnningFileAppender fileName: ${filename}-warn.log PatternLayout: pattern: | %date-%-5level-%msg Filters: ThresholdFilter< dfd2 span class="hljs-symbol">: level: WARN Loggers: Root: level: INFO AppenderRef: #都是需要默认输出的日志 - ref: DefaultConsoleAppender - ref: DefaultFileAppender - ref: WarnningFileAppender Logger: #记录错误日志 - name: WARN_FILE_LOGGER level: WARN additivity: true #跟踪sql的执行情况,name为mybatis - mapper街口所在的包名 - name: com.sample.demo.mapper level: TRACE
5.在
src/main/resources添加mybatis配置文件
mybatis-config.xml
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <typeAliases> <!-- 类型别名定义,为模型类所在包的包名 --> <package name="com.sample.demo.model"/> </typeAliases> <mappers> <!-- 映射文件所在位置,该文件放置于src/main/resources下,但是 包名应该和mapper映射接口保持一致,这样mybatis在获取映射时 才能获取到mapper接口中对应的方法和mapper文件中对应的id的 对应关系 --> <mapper resource="com/sample/demo/mapper/CityMapper.xml"/> </mappers> </configuration>
6.根据第5步中的mapper名称在
src/main/resources源文件目录中创建目录
com/sample/demo/mapper并在mapper中添加
CityMapper.xml映射文件
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!-- 此处的命名空间应和mapper接口保持一致 --> <mapper namespace="com.sample.demo.mapper.CityMapper"> <select id="selectCityById" resultType="City"> SELECT * FROM city WHERE id = #{id} </select> </mapper>
7.在这里插入一下ha~~先创建数据库和数据表,完整sql如下
-- create database and use it DROP database IF EXISTS sample; CREATE DATABASE sample; USE sample; -- check table DROP TABLE IF EXISTS city; DROP TABLE IF EXISTS hotel; -- create table CREATE TABLE city ( id INT PRIMARY KEY auto_increment, `NAME` VARCHAR(36), state VARCHAR(36), country VARCHAR(36) ); CREATE TABLE hotel ( city INT, `NAME` VARCHAR(36), address VARCHAR(36), -- zip 邮编 zip VARCHAR(36) ); INSERT INTO city (NAME, state, country) VALUES ('San Francisco', 'CA', 'US'), ('北京市', 'BeiJing', 'CN'); INSERT INTO hotel (city, NAME, address, zip) VALUES ( 1, 'Conrad Treasury Place', 'William & George Streets', '4001' ), ( 2, 'Chengdu', 'China & SiChuan Province', '637200' )
8.在Java源文件目录
src/main/java下创建包
com.sample.demo并在该包下添加SpringBootMybatis.java。类并添加代码如下
package com.sample.demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class SpringBootMybatis { public static void main(String[] args) { SpringApplication.run(SpringBootMybatis.class, args); } }
9.在Java源文件目录
src/main/java下创建新的包
com.sample.demo.model并在该包下添加实体类City.java。并添加代码如下
package com.sample.demo.model; import java.io.Serializable; public class City implements Serializable { private static final long serialVersionUID = 1L; private Long id; private String name; private String state; private String country; public Long getId() { return this.id; } public City setId(Long id) { this.id = id; return this; } public String getName() { return this.name; } public City setName(String name) { this.name = name; return this; } public String getState() { return this.state; } public City setState(String state) { this.state = state; return this; } public String getCountry() { return this.country; } public City setCountry(String country) { this.country = country; return this; } @Override public String toString() { return getId() + "," + getName() + "," + getState() + "," + getCountry(); } }
10.在Java源文件目录
src/main/java下创建新的包
com.sample.demo.mapper并在该包下添加CityMapper.java 接口。并添加代码如下
package com.sample.demo.mapper; import org.apache.ibatis.annotations.Mapper; import com.sample.demo.model.City; @Mapper public interface CityMapper { /** * 该方法名称应与CityMapper.xml中select的id保持一致 * @return */ public City selectCityById(Integer id); }
11.创建测试类 - 在
src/test/java下创建包
com.sample.demo.mapper并添加测试类
CityMapperTest.java代码如下
package com.sample.demo.mapper; 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; @RunWith(SpringRunner.class) @SpringBootTest public class CityMapperTest { @Autowired private CityMapper cityMapper; @Test public void testSelectCityById() { System.out.println(this.cityMapper.selectCityById(1).toString()); } }
12.运行测试类结果如下(部分)
[33m2017-11-17 14:06:16,647 [main] WARN : maxIdle is larger than maxActive, setting maxIdle to: 50 [36m2017-11-17 14:06:17,143 [main] DEBUG: ==> Preparing: SELECT * FROM city WHERE id = ? [36m2017-11-17 14:06:17,166 [main] DEBUG: ==> Parameters: 1(Integer) [30m2017-11-17 14:06:17,173 [main] TRACE: <== Columns: id, NAME, state, country [30m2017-11-17 14:06:17,173 [main] TRACE: <== Row: 1, San Francisco, CA, US [36m2017-11-17 14:06:17,178 [main] DEBUG: <== Total: 1 1,San Francisco,CA,US
最后附完整项目结构图
项目资源地址
springboot-sample-demo
相关文章推荐
- Spring Boot教程 - Spring Boot集成Mybatis(XML方式)
- Spring Boot集成MyBatis(一)
- Intellij IDEA Spring Boot (10) 集成mybatis以及分页
- (12) spring boot集成MyBatis
- spring boot 集成mybatis
- SpringBoot集成mybatis
- SpringBoot集成Mybatis
- spring boot集成mybatis(druid线程池)
- Spring boot 六 集成 MyBatis
- spring-boot集成mybatis-generator
- SpringBoot学习之集成mybatis
- Spring Boot 集成Mybatis
- SpringBoot入门-19(springboot集成mybatis注解形式增删查改properties配置,利用《script》实现动态SQL)
- Springboot 集成mybatis并用Logback并打印sql
- (一)spring-boot集成mybatis
- Spring Boot系列教程十:Spring boot集成MyBatis
- 909422229_利用Eclipse将Springboot集成Mybatis教程
- Spring Boot集成MyBatis访问数据库
- SpringBoot学习(3.2)——集成Mybatis, xml方式
- Spring boot 集成mybatis通用mapper配置步骤及注意事项