SpringBoot是一种用来简化新Spring应用初始搭建及开发过程的框架,它使用特定方式来进行配置,使得开发人员不再需要定义样板化的配置。MyBatis是一个支持普通SQL查询、存储和高级映射的持久层框架,它消除了几乎所有的JDBC代码和参数的手工配置以及对结果集的检索封装,可以使用简单的XML或注解用于配置和原始映射,将接口和Java的对象映射成数据库中的记录。
最近的项目有相关需求,集成SpringBoot和MyBatis框架后,进行Mysql数据库的数据访问,实现功能后总结于此博客,方便以后查看。
首先下载一个SpringBoot的demo程序,然后在它上面集成,访问:demo下载,如下图所示,勾选Web选项后点击Generate Project即可下载工程。

打开demo后可以更改项目名称,设置目录为如下图形式,其中需要的jar包自行下载,

然后对每一个文件进行编辑,示例中有Disaster和Economic两部分内容,仅介绍Disaster部分原理即可。
先构建Disaster类,根据Mysql中表的数据情况建立对象,Disaster.java代码如下:
- 1 package smm.springboot.bean; 2 3 public class Disaster { 4 private int id; 5 private String deathtoll;//死亡人数 6 private String injuriesnumber;//受伤人数 7 private String disappearancenumber;//失踪人数 8 private String total;//总人数 9 private String did;10 public int getId() {11 return id;12 }13 public void setId(int id) {14 this.id = id;15 }16 public String getDeathtoll() {17 return deathtoll;18 }19 public void setDeathtoll(String deathtoll) {20 this.deathtoll = deathtoll;21 }22 public String getInjuriesnumber() {23 return injuriesnumber;24 }25 public void setInjuriesnumber(String injuriesnumber) {26 this.injuriesnumber = injuriesnumber;27 }28 public String getDisappearancenumber() {29 return disappearancenumber;30 }31 public void setDisappearancenumber(String disappearancenumber) {32 this.disappearancenumber = disappearancenumber;33 }34 public String getTotal() {35 return total;36 }37 public void setTotal(String total) {38 this.total = total;39 }40 public String getDid() {41 return did;42 }43 public void setDid(String did) {44 this.did = did;45 }
- 46 }
接下来是Mybatis的接口DisasterMapper.java,代码如下:
- 1 package smm.springboot.mapper; 2 import org.apache.ibatis.annotations.Mapper; 3 4 import smm.springboot.bean.Disaster; 5 6 @Mapper 7 public interface DisasterMapper {
- 8 public void insert(Disaster disaster);//插入数据 9 public Disaster find(int id);//查找数据10 }
对应的mapper文件,DisasterMapper.xml,插入数据和查找数据的程序都是在这个XML文件中生成,代码如下:
- 1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 3 4 <mapper namespace="smm.springboot.mapper.DisasterMapper"> 5 <!-- insert disaster --> 6 <insert id="insert" parameterType="smm.springboot.bean.Disaster"> 7 INSERT INTO d_disaster_overview(deathtoll,injuriesnumber,disappearancenumber,total,did) VALUE(#{deathtoll},#{injuriesnumber},#{disappearancenumber},#{total},#{did}); 8 </insert> 9 10 <!-- find disaster -->11 <select id="find" parameterType="int" resultType="smm.springboot.bean.Disaster">12 SELECT sum(deathtoll) as deathtoll,sum(injuriesnumber) as injuriesnumber,sum(disappearancenumber) as disappearancenumber, sum(total) as total FROM d_disaster_overview WHERE ID=#{id}13 </select>14 </mapper>
然后是业务层的接口与实现类,DisasterIService.java的代码如下:
- 1 package smm.springboot.service; 2 import org.springframework.stereotype.Component; 3 import org.springframework.web.servlet.DispatcherServlet; 4 5 import smm.springboot.bean.Disaster; 6 7 public interface DisasterIService{ 8 9 public boolean insert(Disaster disaster);10 public Disaster find(int id);11 }
DisasterService.java的代码如下:
- 1 package smm.springboot.service.impl; 2 3 import javax.annotation.Resource; 4 import org.springframework.context.annotation.ComponentScan; 5 import org.springframework.stereotype.Service; 6 7 import smm.springboot.bean.Disaster; 8 import smm.springboot.mapper.DisasterMapper; 9 import smm.springboot.service.DisasterIService;10 11 @ComponentScan({"smm.springboot.mapper"})12 @Service("disasterService")13 public class DisasterService implements DisasterIService{14 @Resource15 private DisasterMapper disasterMapper;16 @Override17 public boolean insert(Disaster disaster) {18 19 try {20 disasterMapper.insert(disaster);21 } catch (Exception e) {22 //TODO Auto-generated catch block23 return false;24 }25 return true;26 }27 @Override28 public Disaster find(int id) {29 return disasterMapper.find(id);30 }31 }
接下来是比较重要的前端控制器AllController.java,它之中关于Disaster的部分代码如下:


- 1 package com.example.demo; 2 3 import javax.annotation.Resource; 4 import org.mybatis.spring.annotation.MapperScan; 5 import org.springframework.context.annotation.ComponentScan; 6 import org.springframework.stereotype.Controller; 7 import org.springframework.web.bind.annotation.RequestMapping; 8 import org.springframework.web.bind.annotation.ResponseBody; 9 import com.google.gson.JsonObject;10 11 import smm.springboot.bean.*;12 import smm.springboot.service.impl.*;13 14 @Controller15 @ComponentScan({"smm.springboot.service"})16 @MapperScan({"smm.springboot.mapper"})17 public class AllController {18 19 @Resource20 private DisasterService disasterService;21 //Disaster部分22 @RequestMapping("/DisasterSaveresult")23 @ResponseBody24 public String helloD(Disaster disaster) {25 boolean result=disasterService.insert(disaster);26 JsonObject json=new JsonObject();27 if(result){28 json.addProperty("manager", "添加成功");29 json.addProperty("result", "1");30 }else{31 json.addProperty("manager", "添加失败");32 json.addProperty("result", "0");33 }34 return json.toString();35 }
- 36 @RequestMapping("/DisasterFind")
- 37 @ResponseBody38 public String sayD(int id){39 Disaster d=disasterService.find(id);40 JsonObject json=new JsonObject();41 json.addProperty("deathtoll", d.getDeathtoll());42 json.addProperty("injuriesnumber", d.getInjuriesnumber());43 json.addProperty("disappearancenumber", d.getDisappearancenumber());44 json.addProperty("total", d.getTotal());45 return json.toString();46 }47 @RequestMapping("/DisasterSave")48 public String jspD() {49 return "DisasterIndex";50 }51 }
View Code
还有ServletInitializer.java,其代码如下:
- 1 package com.example.demo; 2 3 import org.springframework.boot.builder.SpringApplicationBuilder; 4 import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;; 5 6 public class ServletInitializer extends org.springframework.boot.web.servlet.support.SpringBootServletInitializer{ 7 @Override 8 protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { 9 return application.sources(this.getClass());10 }11 }
还有SpringBoot的配置文件application.properties,内容如下:


- server.context-path=/HelloWorld
-
- spring.datasource.driver-class-name =com.mysql.jdbc.Driver
- spring.datasource.url =jdbc:mysql://10.10.10.7:3306/mysqlspring.datasource.username =name
- spring.datasource.password =password
-
- mybatis.typeAliasesPackage=smm.springboot.bean
- mybatis.mapperLocations=classpath:mapper/*Mapper.xml
-
- spring.freemarker.template-loader-path=classpath:/templates/
- spring.freemarker.cache=false
- spring.freemarker.charset=UTF-8
- spring.freemarker.check-template-location=true
- spring.freemarker.content-type=text/html
- spring.freemarker.expose-request-attributes=true
- spring.freemarker.expose-session-attributes=true
- spring.freemarker.request-context-attribute=request
- spring.freemarker.suffix=.ftl
-
- spring.mvc.view.prefix = /WEB-INF/jsp/
- spring.mvc.view.suffix = .jsp
View Code
还有maven项目的配置文件pom.xml,内容如下:
- 1 <?xml version="1.0" encoding="UTF-8"?> 2 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4 <modelVersion>4.0.0</modelVersion> 5 6 <groupId>disaster</groupId> 7 <artifactId>disaster</artifactId> 8 <version>0.0.1-SNAPSHOT</version> 9 <packaging>war</packaging> 10 11 <name>springbootone</name> 12 <url>http://maven.apache.org</url> 13 14 <properties> 15 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 16 </properties> 17 18 <!-- 添加springboot继承 --> 19 <parent> 20 <groupId>org.springframework.boot</groupId> 21 <artifactId>spring-boot-starter-parent</artifactId> 22 <version>2.1.0.RELEASE</version> 23 </parent> 24 25 <dependencies> 26 <!-- 添加springMVC支持 --> 27 <dependency> 28 <groupId>org.springframework.boot</groupId> 29 <artifactId>spring-boot-starter-web</artifactId> 30 </dependency> 31 <!-- MySQL --> 32 <dependency> 33 <groupId>mysql</groupId> 34 <artifactId>mysql-connector-java</artifactId> 35 <version>5.1.19</version> 36 </dependency> 37 <!-- mybatis --> 38 <dependency> 39 <groupId>org.mybatis</groupId> 40 <artifactId>mybatis</artifactId> 41 <version>3.4.5</version> 42 </dependency> 43 <dependency> 44 <groupId>org.mybatis</groupId> 45 <artifactId>mybatis-spring</artifactId> 46 <version>1.3.1</version> 47 </dependency> 48 <dependency> 49 <groupId>org.springframework</groupId> 50 <artifactId>spring-webmvc</artifactId> 51 <version>5.1.2.RELEASE</version> 52 </dependency> 53 <dependency> 54 <groupId>org.springframework</groupId> 55 <artifactId>spring-tx</artifactId> 56 <version>5.1.2.RELEASE</version> 57 </dependency> 58 <dependency> 59 <groupId>org.apache.logging.log4j</groupId> 60 <artifactId>log4j-core</artifactId> 61 <version>2.7</version> 62 </dependency> 63 <dependency> 64 <groupId>com.alibaba</groupId> 65 <artifactId>druid</artifactId> 66 <version>1.1.6</version> 67 </dependency> 68 <dependency> 69 <groupId>org.springframework</groupId> 70 <artifactId>spring-jdbc</artifactId> 71 <version>5.0.2.RELEASE</version> 72 </dependency> 73 <dependency> 74 <groupId>org.mybatis.spring.boot</groupId> 75 <artifactId>mybatis-spring-boot-starter</artifactId> 76 <version>1.2.0</version> 77 </dependency> 78 <dependency> 79 <groupId>org.springframework.boot</groupId> 80 <artifactId>spring-boot-starter-web</artifactId> 81 </dependency> 82 <!-- tomcat支持 --> 83 <dependency> 84 <groupId>org.springframework.boot</groupId> 85 <artifactId>spring-boot-starter-tomcat</artifactId> 86 <scope>provided</scope> 87 </dependency> 88 <dependency> 89 <groupId>org.apache.tomcat.embed</groupId> 90 <artifactId>tomcat-embed-jasper</artifactId> 91 <scope>provided</scope> 92 </dependency> 93 <!-- jsp标签库 --> 94 <dependency> 95 <groupId>javax.servlet</groupId> 96 <artifactId>jstl</artifactId> 97 </dependency> 98 <dependency> 99 <groupId>com.google.code.gson</groupId>100 <artifactId>gson</artifactId>101 <version>2.8.0</version>102 </dependency>103 </dependencies>104 105 <build>106 <finalName>BOOT</finalName>107 <plugins>108 <!-- 引入java编译器插件 -->109 <plugin>110 <groupId>org.apache.maven.plugins</groupId>111 <artifactId>maven-compiler-plugin</artifactId>112 <configuration>113 <source>1.8</source>114 <target>1.8</target>115 <compilerVersion>1.8</compilerVersion>116 <encoding>UTF-8</encoding>117 </configuration>118 </plugin>119 <!-- 资源文件拷贝插件 -->120 <plugin>121 <groupId>org.apache.maven.plugins</groupId>122 <artifactId>maven-resources-plugin</artifactId>123 <configuration>124 <encoding>UTF-8</encoding>125 </configuration>126 </plugin>127 </plugins>128 </build>129 </project>
另外还配置了一个用来输入数据的页面DisasterIndex.jsp,目录如下图:

内容代码如下:
- 1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3 <!DOCTYPE html> 4 <html> 5 <head> 6 <title>输入灾害数据</title> 7 </head> 8 <body> 9 <h1>Please input disaster data!</h1>10 <form action="DisasterSaveresult" name="form">11 <p>12 <table border="1">13 <tr>14 <td>死亡人数</td>15 <td>受伤人数</td>16 <td>失踪人数</td>17 <td>总人数</td>18 <td>Did</td>19 </tr>20 <tr>21 <td><input name="deathtoll" type="text" /></td>22 <td><input name="injuriesnumber" type="text" /></td>23 <td><input name="disappearancenumber" type="text" /></td>24 <td><input name="total" type="text" /></td>25 <td><input name="did" value="1" type="text" /></td>26 </tr>27 </table>28 </p>29 <tr>30 <td><input type="submit" value="确定" size="50" /></td>31 <td><input type="reset" value="取消" size="50" /></td>32 </tr>33 </form>34 </body>35 </html>
最后是程序启动类DemoApplication.java,内容如下:
- 1 package com.example.demo; 2 3 import org.springframework.boot.SpringApplication; 4 import org.springframework.boot.autoconfigure.SpringBootApplication; 5 import java.net.*; 6 import java.util.ArrayList; 7 import java.util.List; 8 import java.io.FileOutputStream;
- 9 import java.io.InputStream;
- 10 import java.io.FileNotFoundException;11 import java.io.IOException;12 13 import org.apache.http.HttpEntity;14 import org.apache.http.HttpResponse;15 import org.apache.http.NameValuePair;16 import org.apache.http.client.HttpClient;17 import org.apache.http.client.methods.HttpGet;
- 18 import org.apache.http.client.entity.UrlEncodedFormEntity;19 import org.apache.http.client.methods.HttpPost;20 import org.apache.http.impl.client.DefaultHttpClient;21 import org.apache.http.message.BasicNameValuePair;22 import org.apache.http.util.EntityUtils;23 import org.codehaus.jettison.json.JSONObject;24 25 26 @SpringBootApplication27 public class DemoApplication {28 public static void main(String[] args) {29 SpringApplication.run(DemoApplication.class, args);30 }31 }
点击Run As Java Application后启动,可看到如下信息:

在浏览器输入http://localhost:8080//DisasterSave,得到以下页面,便可在表格中输入数据并插入到Mysql数据库的表中。

至此,整个工程已经完成!