SpringBoot集成Mybatis
来源:互联网 发布:电脑软件如何卸载 编辑:程序博客网 时间:2024/06/14 03:16
起头自述
本文主要是参考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: 8089spring: 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: 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 itDROP database IF EXISTS sample;CREATE DATABASE sample;USE sample;-- check tableDROP TABLEIF EXISTS city;DROP TABLEIF EXISTS hotel;-- create tableCREATE 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;@SpringBootApplicationpublic 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;@Mapperpublic 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)@SpringBootTestpublic 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: 11,San Francisco,CA,US
最后附完整项目结构图
项目资源地址
springboot-sample-demo
- springBoot集成mybatis
- SpringBoot集成mybatis
- springboot集成mybatis
- SpringBoot集成mybatis
- SpringBoot集成MyBatis
- SpringBoot -- 集成Mybatis/Druid
- SpringBoot集成MyBatis
- springboot 集成 mybatis
- springboot集成mybatis
- springboot 集成mybatis
- SpringBoot集成Mybatis
- springboot集成mybatis
- springboot+mybatis-plus集成
- springboot+dubbo+mybatis集成
- SpringBoot集成mybatis
- SpringBoot集成MyBatis框架
- SpringBoot集成struts2,mybatis
- springboot集成mybatis
- C语言基础练习(一)
- Vue中this.$router.push参数获取
- 恶意word分析
- Eclipse 安装Activiti Designer 插件安装错误处理
- 二维数组的Y轴逐渐递增
- SpringBoot集成Mybatis
- 如何编译由多个c++源文件组成的项目
- Java多线程工具包java.util.concurrent---DelayQueue
- ffmpeg + SDL2 实现的视频播放器「视音频同步」
- location.href 无法跳转链接
- PHP将图片直接保存到数据库中
- @RequestMapping 用法详解之地址映射(转)
- iOS
- 关于线程的总结--安全,协调,开销分析