快速入门
1 SpringBoot简介
SpringBoot是一个快速开发框架,封装了Maven常用依赖、能够快速整合第三方框架;简化XML配置,全部采用注解形式,内置Tomcat、Jetty、Undertow,帮助开发者能够实现快速开发,SpringBoot的Web组件,默认集成SpringMVC框架。
- 帮助开发者快速整合第三方框架(原理:maven依赖封装)
- 去除xml配置,完全采用注解化(原理:Spring体系中内置注解方式)
- 无序外部Tomcat、内部实现服务器(原理:Java语言支持内嵌入Tomcat服务器)
系统要求:
Java1.8+
Spring Framework 5.0以上
2 创建项目
1 创建maven项目

2、修改maven仓库

3、添加依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.8.RELEASE </version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
com.couragesteak.controller:视图层(web)和接口(业务逻辑)
com.couragesteak.service:接口
Web开发
1 静态资源
Spring Boot默认提供静态资源目录位置需置于classpath(resource)下,目录名需符合如下规则:
/static
/public
/resources
/META-INF/resources
2 yaml与properties用法
2.1 配置文件(推荐yml)
在resource下创建文件application.properties
cs.name=cs
cs.star=9
在resource下创建文件application.yml
cs:
name: cs
star: 9
2.2 读取
package com.couragesteak.service.config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class read_properties {
@Value("${cs.name}")
private String name;
@Value("${cs.star}")
private String star;
@RequestMapping("/getProperties")
public String getProperties() {
return name + " : " + star;
}
}
3 渲染web视图
com.couragesteak.controller:视图层
com.couragesteak.service:业务逻辑层
com.couragesteak.dao:数据访问层
默认模板引擎:Thymeleaf、FreeMarker、Velocity、Groovy、Mustache
3.1 使用FreeMarker模板
3.1.1 pom依赖引入
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
3.1.2 前端代码
src/main/resources/创建一个templates
freemarkIndex.ftl
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
名字:${name}
<br>
<#if sex=="0">
男
<#elseif sex=="1">
女
<#else>
未知
</#if>
<br>
<#if (age>=18)>
成年
<#else>
未成年
</#if>
<#list userList as user>
${user}
</#list>
</body>
</html>
3.1.3 后端代码
package com.couragesteak.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.Map;
@Controller
public class FreemarkIndexController {
@RequestMapping("/freemarkIndex")
public String freemarkIndex(Map<String, Object> result, HttpServletRequest request) {
result.put("name", "有勇气的牛排");
result.put("sex", "0");
result.put("age", 22);
ArrayList<Object> userList = new ArrayList<>();
userList.add("国学");
userList.add("大师");
result.put("userList",userList);
return "freemarkIndex";
}
}
Freemarker配置
spring:
http:
encoding:
force: true
charset: UTF-8
freemarker:
allow-request-override: false
cache: false
check-template-location: true
charset: UTF-8
content-type: text/html; charset=utf-8
expose-request-attributes: false
expose-session-attributes: false
expose-spring-macro-helpers: false
suffix: .ftl
template-loader-path: classpath:/templates
两种方法
1 用符号代替: > gt , >= gte ,< lt , <= lte
2 加括号 <#if(x>y)>
3.2 thymeleaf渲染web页面
thymeleaf是一款用于渲染 xml/xhtml/xhtml5内容的模板引擎,类似于jsp、Velocity、FreeMaker等,它可以轻易的与Spring MVC等web框架进行集成作为 Web应用的模板引擎。
3.2.1 Maven依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
3.2.2 新增配置
spring:
thymeleaf:
prefix: classpath:/templates/
check-template-location: true
cache: true
suffix: .html
encoding: UTF-8
mode: HTML5
4 数据访问
CREATE TABLE `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(32) NOT NULL COMMENT '用户名称',
`age` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
insert into users values (null, 'cs', '22');
4.1 整合 JdbcTemplate
4.1.1 Maven依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.21</version>
</dependency>
4.1.2 新增配置
spring:
datasource:
url: jdbc:mysql://localhost:3306/spring_boot
username: root
password: root123456
driver-class-name: com.mysql.jdbc.Driver
4.1.3 后端
jdbcTemplate_UserService.java
package com.couragesteak.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class jdbcTemplate_UserService {
@Autowired
private JdbcTemplate jdbcTemplate;
@RequestMapping("insertUser")
public String insertUser(String userName, Integer age) {
int update = jdbcTemplate.update("insert into users values (null, ?, ?)", userName, age);
return update > 0 ? "success" : "fail";
}
}
4.2 整合MyBatis
4.2.1 Maven依赖
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.21</version>
</dependency>
4.2.2 application.yml
spring:
datasource:
url: jdbc:mysql://localhost:3306/spring_boot
username: root
password: root123456
driver-class-name: com.mysql.jdbc.Driver
4.2.3 Mapper代码
package com.couragesteak.mapper;
import com.couragesteak.entity.UserEntity;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
public interface UserMapper {
@Insert("insert into users values (null, #{userName}, #{age});")
int insertUser(@Param("userName") String userName,@Param("age") Integer age);
@Select("select id as id, name as name, age as age from users where id=#{id}")
UserEntity selectByUserId(@Param("id") Integer id);
}
4.2.3 后端
@RequestMapping("/mybatisFindById")
public UserEntity mybatisFindById(Integer id){
System.out.println("============");
System.out.println(id);
return userMapper.selectByUserId(id);
}
5 整合热部署
<h1><a id="_0"></a>快速入门</h1>
<h2><a id="1_SpringBoot_2"></a>1 SpringBoot简介</h2>
<p>SpringBoot是一个快速开发框架,封装了Maven常用依赖、能够快速整合第三方框架;简化XML配置,全部采用注解形式,内置Tomcat、Jetty、Undertow,帮助开发者能够实现快速开发,SpringBoot的Web组件,默认集成SpringMVC框架。</p>
<ul>
<li>帮助开发者快速整合第三方框架(原理:maven依赖封装)</li>
<li>去除xml配置,完全采用注解化(原理:Spring体系中内置注解方式)</li>
<li>无序外部Tomcat、内部实现服务器(原理:Java语言支持内嵌入Tomcat服务器)</li>
</ul>
<p>系统要求:</p>
<p>Java1.8+</p>
<p>Spring Framework 5.0以上</p>
<h2><a id="2__22"></a>2 创建项目</h2>
<p>1 创建maven项目</p>
<p><img src="E:%5Cjava%5Csprint_boot%5Cassets%5Cimage-20230130223955920.png" alt="image-20230130223955920" /></p>
<p>2、修改maven仓库</p>
<p><img src="E:%5Cjava%5Csprint_boot%5Cassets%5Cimage-20230130224229286.png" alt="image-20230130224229286" /></p>
<p>3、添加依赖</p>
<pre><div class="hljs"><code class="lang-xml"><span class="hljs-tag"><<span class="hljs-name">parent</span>></span>
<span class="hljs-tag"><<span class="hljs-name">groupId</span>></span>org.springframework.boot<span class="hljs-tag"></<span class="hljs-name">groupId</span>></span>
<span class="hljs-tag"><<span class="hljs-name">artifactId</span>></span>spring-boot-starter-parent<span class="hljs-tag"></<span class="hljs-name">artifactId</span>></span>
<span class="hljs-tag"><<span class="hljs-name">version</span>></span>2.1.8.RELEASE <span class="hljs-tag"></<span class="hljs-name">version</span>></span>
<span class="hljs-tag"></<span class="hljs-name">parent</span>></span>
<span class="hljs-tag"><<span class="hljs-name">dependencies</span>></span>
<span class="hljs-tag"><<span class="hljs-name">dependency</span>></span>
<span class="hljs-tag"><<span class="hljs-name">groupId</span>></span>org.springframework.boot<span class="hljs-tag"></<span class="hljs-name">groupId</span>></span>
<span class="hljs-tag"><<span class="hljs-name">artifactId</span>></span>spring-boot-starter-web<span class="hljs-tag"></<span class="hljs-name">artifactId</span>></span>
<span class="hljs-tag"></<span class="hljs-name">dependency</span>></span>
<span class="hljs-tag"></<span class="hljs-name">dependencies</span>></span>
</code></div></pre>
<p>com.couragesteak.controller:视图层(web)和接口(业务逻辑)</p>
<p>com.couragesteak.service:接口</p>
<h1><a id="Web_62"></a>Web开发</h1>
<h2><a id="1__64"></a>1 静态资源</h2>
<p>Spring Boot默认提供静态资源目录位置需置于classpath(resource)下,目录名需符合如下规则:</p>
<p>/static</p>
<p>/public</p>
<p>/resources</p>
<p>/META-INF/resources</p>
<h2><a id="2_yamlproperties_76"></a>2 yaml与properties用法</h2>
<h3><a id="21_yml_78"></a>2.1 配置文件(推荐yml)</h3>
<p>在resource下创建文件application.properties</p>
<pre><code class="lang-">cs.name=cs
cs.star=9
</code></pre>
<p>在resource下创建文件application.yml</p>
<pre><div class="hljs"><code class="lang-yaml"><span class="hljs-attr">cs:</span>
<span class="hljs-attr">name:</span> <span class="hljs-string">cs</span>
<span class="hljs-attr">star:</span> <span class="hljs-number">9</span>
</code></div></pre>
<h2><a id="22__95"></a>2.2 读取</h2>
<pre><div class="hljs"><code class="lang-java"><span class="hljs-keyword">package</span> com.couragesteak.service.config;
<span class="hljs-keyword">import</span> org.springframework.beans.factory.annotation.Value;
<span class="hljs-keyword">import</span> org.springframework.web.bind.annotation.RequestMapping;
<span class="hljs-keyword">import</span> org.springframework.web.bind.annotation.RestController;
<span class="hljs-comment">/*
* 读取配置文件
* */</span>
<span class="hljs-meta">@RestController</span>
<span class="hljs-keyword">public</span> <span class="hljs-keyword">class</span> <span class="hljs-title class_">read_properties</span> {
<span class="hljs-meta">@Value("${cs.name}")</span>
<span class="hljs-keyword">private</span> String name;
<span class="hljs-meta">@Value("${cs.star}")</span>
<span class="hljs-keyword">private</span> String star;
<span class="hljs-meta">@RequestMapping("/getProperties")</span>
<span class="hljs-keyword">public</span> String <span class="hljs-title function_">getProperties</span><span class="hljs-params">()</span> {
<span class="hljs-keyword">return</span> name + <span class="hljs-string">" : "</span> + star;
}
}
</code></div></pre>
<h2><a id="3_web_124"></a>3 渲染web视图</h2>
<p>com.couragesteak.controller:视图层</p>
<p>com.couragesteak.service:业务逻辑层</p>
<p>com.couragesteak.dao:数据访问层</p>
<p>默认模板引擎:Thymeleaf、FreeMarker、Velocity、Groovy、Mustache</p>
<h3><a id="31_FreeMarker_136"></a>3.1 使用FreeMarker模板</h3>
<h4><a id="311_pom_138"></a>3.1.1 pom依赖引入</h4>
<pre><div class="hljs"><code class="lang-xml"><span class="hljs-comment"><!-- 引入freeMarker的依赖包. --></span>
<span class="hljs-tag"><<span class="hljs-name">dependency</span>></span>
<span class="hljs-tag"><<span class="hljs-name">groupId</span>></span>org.springframework.boot<span class="hljs-tag"></<span class="hljs-name">groupId</span>></span>
<span class="hljs-tag"><<span class="hljs-name">artifactId</span>></span>spring-boot-starter-freemarker<span class="hljs-tag"></<span class="hljs-name">artifactId</span>></span>
<span class="hljs-tag"></<span class="hljs-name">dependency</span>></span>
</code></div></pre>
<h3><a id="312__148"></a>3.1.2 前端代码</h3>
<p>src/main/resources/创建一个templates</p>
<p>freemarkIndex.ftl</p>
<pre><div class="hljs"><code class="lang-html"><span class="hljs-meta"><!DOCTYPE <span class="hljs-keyword">html</span>></span>
<span class="hljs-tag"><<span class="hljs-name">html</span> <span class="hljs-attr">lang</span>=<span class="hljs-string">"en"</span>></span>
<span class="hljs-tag"><<span class="hljs-name">head</span>></span>
<span class="hljs-tag"><<span class="hljs-name">meta</span> <span class="hljs-attr">charset</span>=<span class="hljs-string">"UTF-8"</span>></span>
<span class="hljs-tag"><<span class="hljs-name">title</span>></span>Title<span class="hljs-tag"></<span class="hljs-name">title</span>></span>
<span class="hljs-tag"></<span class="hljs-name">head</span>></span>
<span class="hljs-tag"><<span class="hljs-name">body</span>></span>
名字:${name}
<span class="hljs-tag"><<span class="hljs-name">br</span>></span>
<#if sex=="0">
男
<#elseif sex=="1">
女
<#else>
未知
</#if>
<span class="hljs-tag"><<span class="hljs-name">br</span>></span>
<#if (age>=18)>
成年
<#else>
未成年
</#if>
<#list userList as user>
${user}
</#list>
<span class="hljs-tag"></<span class="hljs-name">body</span>></span>
<span class="hljs-tag"></<span class="hljs-name">html</span>></span>
</code></div></pre>
<h3><a id="313__188"></a>3.1.3 后端代码</h3>
<pre><div class="hljs"><code class="lang-java"><span class="hljs-keyword">package</span> com.couragesteak.controller;
<span class="hljs-keyword">import</span> org.springframework.stereotype.Controller;
<span class="hljs-keyword">import</span> org.springframework.web.bind.annotation.RequestMapping;
<span class="hljs-keyword">import</span> javax.servlet.http.HttpServletRequest;
<span class="hljs-keyword">import</span> java.util.ArrayList;
<span class="hljs-keyword">import</span> java.util.Map;
<span class="hljs-meta">@Controller</span>
<span class="hljs-keyword">public</span> <span class="hljs-keyword">class</span> <span class="hljs-title class_">FreemarkIndexController</span> {
<span class="hljs-comment">// http://127.0.0.1:8080/freemarkIndex</span>
<span class="hljs-meta">@RequestMapping("/freemarkIndex")</span>
<span class="hljs-keyword">public</span> String <span class="hljs-title function_">freemarkIndex</span><span class="hljs-params">(Map<String, Object> result, HttpServletRequest request)</span> {
<span class="hljs-comment">// 传数据到页面</span>
result.put(<span class="hljs-string">"name"</span>, <span class="hljs-string">"有勇气的牛排"</span>);
result.put(<span class="hljs-string">"sex"</span>, <span class="hljs-string">"0"</span>);
result.put(<span class="hljs-string">"age"</span>, <span class="hljs-number">22</span>);
ArrayList<Object> userList = <span class="hljs-keyword">new</span> <span class="hljs-title class_">ArrayList</span><>();
userList.add(<span class="hljs-string">"国学"</span>);
userList.add(<span class="hljs-string">"大师"</span>);
result.put(<span class="hljs-string">"userList"</span>,userList);
<span class="hljs-comment">// request.setAttribute("name","cs");</span>
<span class="hljs-keyword">return</span> <span class="hljs-string">"freemarkIndex"</span>;
}
}
</code></div></pre>
<p>Freemarker配置</p>
<pre><div class="hljs"><code class="lang-yaml"><span class="hljs-attr">spring:</span>
<span class="hljs-attr">http:</span>
<span class="hljs-attr">encoding:</span>
<span class="hljs-attr">force:</span> <span class="hljs-literal">true</span>
<span class="hljs-comment">### 模版引擎编码为UTF-8</span>
<span class="hljs-attr">charset:</span> <span class="hljs-string">UTF-8</span>
<span class="hljs-attr">freemarker:</span>
<span class="hljs-attr">allow-request-override:</span> <span class="hljs-literal">false</span>
<span class="hljs-attr">cache:</span> <span class="hljs-literal">false</span>
<span class="hljs-attr">check-template-location:</span> <span class="hljs-literal">true</span>
<span class="hljs-attr">charset:</span> <span class="hljs-string">UTF-8</span>
<span class="hljs-attr">content-type:</span> <span class="hljs-string">text/html;</span> <span class="hljs-string">charset=utf-8</span>
<span class="hljs-attr">expose-request-attributes:</span> <span class="hljs-literal">false</span>
<span class="hljs-attr">expose-session-attributes:</span> <span class="hljs-literal">false</span>
<span class="hljs-attr">expose-spring-macro-helpers:</span> <span class="hljs-literal">false</span>
<span class="hljs-comment">## 模版文件结尾.ftl</span>
<span class="hljs-attr">suffix:</span> <span class="hljs-string">.ftl</span>
<span class="hljs-comment">## 模版文件目录</span>
<span class="hljs-attr">template-loader-path:</span> <span class="hljs-string">classpath:/templates</span>
</code></div></pre>
<pre><code class="lang-">两种方法
1 用符号代替: > gt , >= gte ,< lt , <= lte
2 加括号 <#if(x>y)>
</code></pre>
<h3><a id="32_thymeleafweb_257"></a>3.2 thymeleaf渲染web页面</h3>
<p>thymeleaf是一款用于渲染 xml/xhtml/xhtml5内容的模板引擎,类似于jsp、Velocity、FreeMaker等,它可以轻易的与Spring MVC等web框架进行集成作为 Web应用的模板引擎。</p>
<h4><a id="321_Maven_261"></a>3.2.1 Maven依赖</h4>
<pre><div class="hljs"><code class="lang-xml"><span class="hljs-comment"><!-- 模板引擎 引入thymeleaf的依赖--></span>
<span class="hljs-tag"><<span class="hljs-name">dependency</span>></span>
<span class="hljs-tag"><<span class="hljs-name">groupId</span>></span>org.springframework.boot<span class="hljs-tag"></<span class="hljs-name">groupId</span>></span>
<span class="hljs-tag"><<span class="hljs-name">artifactId</span>></span>spring-boot-starter-thymeleaf<span class="hljs-tag"></<span class="hljs-name">artifactId</span>></span>
<span class="hljs-tag"></<span class="hljs-name">dependency</span>></span>
</code></div></pre>
<h4><a id="322__271"></a>3.2.2 新增配置</h4>
<pre><div class="hljs"><code class="lang-yaml"><span class="hljs-comment">### ThymeLeaf配置</span>
<span class="hljs-attr">spring:</span>
<span class="hljs-attr">thymeleaf:</span>
<span class="hljs-comment">#prefix:指定模板所在的目录</span>
<span class="hljs-attr">prefix:</span> <span class="hljs-string">classpath:/templates/</span>
<span class="hljs-comment">#check-tempate-location: 检查模板路径是否存在</span>
<span class="hljs-attr">check-template-location:</span> <span class="hljs-literal">true</span>
<span class="hljs-comment">#cache: 是否缓存,开发模式下设置为false,避免改了模板还要重启服务器,线上设置为true,可以提高性能。</span>
<span class="hljs-attr">cache:</span> <span class="hljs-literal">true</span>
<span class="hljs-attr">suffix:</span> <span class="hljs-string">.html</span>
<span class="hljs-attr">encoding:</span> <span class="hljs-string">UTF-8</span>
<span class="hljs-attr">mode:</span> <span class="hljs-string">HTML5</span>
</code></div></pre>
<h2><a id="4__290"></a>4 数据访问</h2>
<pre><div class="hljs"><code class="lang-sql"><span class="hljs-keyword">CREATE</span> <span class="hljs-keyword">TABLE</span> `users` (
`id` <span class="hljs-type">int</span>(<span class="hljs-number">11</span>) <span class="hljs-keyword">NOT</span> <span class="hljs-keyword">NULL</span> AUTO_INCREMENT,
`name` <span class="hljs-type">varchar</span>(<span class="hljs-number">32</span>) <span class="hljs-keyword">NOT</span> <span class="hljs-keyword">NULL</span> COMMENT <span class="hljs-string">'用户名称'</span>,
`age` <span class="hljs-type">int</span>(<span class="hljs-number">11</span>) <span class="hljs-keyword">DEFAULT</span> <span class="hljs-keyword">NULL</span>,
<span class="hljs-keyword">PRIMARY</span> KEY (`id`)
) ENGINE<span class="hljs-operator">=</span>InnoDB AUTO_INCREMENT<span class="hljs-operator">=</span><span class="hljs-number">3</span> <span class="hljs-keyword">DEFAULT</span> CHARSET<span class="hljs-operator">=</span>utf8;
<span class="hljs-keyword">insert</span> <span class="hljs-keyword">into</span> users <span class="hljs-keyword">values</span> (<span class="hljs-keyword">null</span>, <span class="hljs-string">'cs'</span>, <span class="hljs-string">'22'</span>);
</code></div></pre>
<h3><a id="41__JdbcTemplate_303"></a>4.1 整合 JdbcTemplate</h3>
<h4><a id="411_Maven_305"></a>4.1.1 Maven依赖</h4>
<pre><div class="hljs"><code class="lang-xml"><span class="hljs-comment"><!-- SpringBoot整合jdbc 模板框架 --></span>
<span class="hljs-tag"><<span class="hljs-name">dependency</span>></span>
<span class="hljs-tag"><<span class="hljs-name">groupId</span>></span>org.springframework.boot<span class="hljs-tag"></<span class="hljs-name">groupId</span>></span>
<span class="hljs-tag"><<span class="hljs-name">artifactId</span>></span>spring-boot-starter-jdbc<span class="hljs-tag"></<span class="hljs-name">artifactId</span>></span>
<span class="hljs-tag"></<span class="hljs-name">dependency</span>></span>
<span class="hljs-comment"><!-- SpringBoot整合mysql驱动类 --></span>
<span class="hljs-tag"><<span class="hljs-name">dependency</span>></span>
<span class="hljs-tag"><<span class="hljs-name">groupId</span>></span>mysql<span class="hljs-tag"></<span class="hljs-name">groupId</span>></span>
<span class="hljs-tag"><<span class="hljs-name">artifactId</span>></span>mysql-connector-java<span class="hljs-tag"></<span class="hljs-name">artifactId</span>></span>
<span class="hljs-tag"><<span class="hljs-name">version</span>></span>5.1.21<span class="hljs-tag"></<span class="hljs-name">version</span>></span>
<span class="hljs-tag"></<span class="hljs-name">dependency</span>></span>
</code></div></pre>
<h4><a id="412__321"></a>4.1.2 新增配置</h4>
<pre><div class="hljs"><code class="lang-yaml"><span class="hljs-attr">spring:</span>
<span class="hljs-attr">datasource:</span>
<span class="hljs-attr">url:</span> <span class="hljs-string">jdbc:mysql://localhost:3306/spring_boot</span>
<span class="hljs-attr">username:</span> <span class="hljs-string">root</span>
<span class="hljs-attr">password:</span> <span class="hljs-string">root123456</span>
<span class="hljs-attr">driver-class-name:</span> <span class="hljs-string">com.mysql.jdbc.Driver</span>
</code></div></pre>
<h4><a id="413__332"></a>4.1.3 后端</h4>
<p>jdbcTemplate_UserService.java</p>
<pre><div class="hljs"><code class="lang-java"><span class="hljs-comment">/*
* 数据访问
* 整合jdbcTemplate
* */</span>
<span class="hljs-keyword">package</span> com.couragesteak.service;
<span class="hljs-keyword">import</span> org.springframework.beans.factory.annotation.Autowired;
<span class="hljs-keyword">import</span> org.springframework.jdbc.core.JdbcTemplate;
<span class="hljs-keyword">import</span> org.springframework.web.bind.annotation.RequestMapping;
<span class="hljs-keyword">import</span> org.springframework.web.bind.annotation.RestController;
<span class="hljs-meta">@RestController</span>
<span class="hljs-keyword">public</span> <span class="hljs-keyword">class</span> <span class="hljs-title class_">jdbcTemplate_UserService</span> {
<span class="hljs-meta">@Autowired</span> <span class="hljs-comment">// 获取模板</span>
<span class="hljs-keyword">private</span> JdbcTemplate jdbcTemplate;
<span class="hljs-comment">/*
* 插入数据到user表
* */</span>
<span class="hljs-comment">// http://127.0.0.1:8080/insertUser?userName=cs1&age=20</span>
<span class="hljs-meta">@RequestMapping("insertUser")</span>
<span class="hljs-keyword">public</span> String <span class="hljs-title function_">insertUser</span><span class="hljs-params">(String userName, Integer age)</span> {
<span class="hljs-comment">// insert into users values (null, 'cs', '22');</span>
<span class="hljs-type">int</span> <span class="hljs-variable">update</span> <span class="hljs-operator">=</span> jdbcTemplate.update(<span class="hljs-string">"insert into users values (null, ?, ?)"</span>, userName, age);
<span class="hljs-keyword">return</span> update > <span class="hljs-number">0</span> ? <span class="hljs-string">"success"</span> : <span class="hljs-string">"fail"</span>;
}
}
</code></div></pre>
<h3><a id="42_MyBatis_371"></a>4.2 整合MyBatis</h3>
<h4><a id="421_Maven_373"></a>4.2.1 Maven依赖</h4>
<pre><div class="hljs"><code class="lang-xml"><span class="hljs-comment"><!-- springboot 整合mybatis --></span>
<span class="hljs-tag"><<span class="hljs-name">dependency</span>></span>
<span class="hljs-tag"><<span class="hljs-name">groupId</span>></span>org.mybatis.spring.boot<span class="hljs-tag"></<span class="hljs-name">groupId</span>></span>
<span class="hljs-tag"><<span class="hljs-name">artifactId</span>></span>mybatis-spring-boot-starter<span class="hljs-tag"></<span class="hljs-name">artifactId</span>></span>
<span class="hljs-tag"><<span class="hljs-name">version</span>></span>1.1.1<span class="hljs-tag"></<span class="hljs-name">version</span>></span>
<span class="hljs-tag"></<span class="hljs-name">dependency</span>></span>
<span class="hljs-tag"><<span class="hljs-name">dependency</span>></span>
<span class="hljs-tag"><<span class="hljs-name">groupId</span>></span>mysql<span class="hljs-tag"></<span class="hljs-name">groupId</span>></span>
<span class="hljs-tag"><<span class="hljs-name">artifactId</span>></span>mysql-connector-java<span class="hljs-tag"></<span class="hljs-name">artifactId</span>></span>
<span class="hljs-tag"><<span class="hljs-name">version</span>></span>5.1.21<span class="hljs-tag"></<span class="hljs-name">version</span>></span>
<span class="hljs-tag"></<span class="hljs-name">dependency</span>></span>
</code></div></pre>
<h4><a id="422_applicationyml_389"></a>4.2.2 application.yml</h4>
<pre><div class="hljs"><code class="lang-yaml"><span class="hljs-attr">spring:</span>
<span class="hljs-attr">datasource:</span>
<span class="hljs-attr">url:</span> <span class="hljs-string">jdbc:mysql://localhost:3306/spring_boot</span>
<span class="hljs-attr">username:</span> <span class="hljs-string">root</span>
<span class="hljs-attr">password:</span> <span class="hljs-string">root123456</span>
<span class="hljs-attr">driver-class-name:</span> <span class="hljs-string">com.mysql.jdbc.Driver</span>
</code></div></pre>
<h4><a id="423_Mapper_400"></a>4.2.3 Mapper代码</h4>
<pre><div class="hljs"><code class="lang-java"><span class="hljs-keyword">package</span> com.couragesteak.mapper;
<span class="hljs-keyword">import</span> com.couragesteak.entity.UserEntity;
<span class="hljs-keyword">import</span> org.apache.ibatis.annotations.Insert;
<span class="hljs-keyword">import</span> org.apache.ibatis.annotations.Param;
<span class="hljs-keyword">import</span> org.apache.ibatis.annotations.Select;
<span class="hljs-keyword">public</span> <span class="hljs-keyword">interface</span> <span class="hljs-title class_">UserMapper</span> {
<span class="hljs-comment">// 插入数据</span>
<span class="hljs-meta">@Insert("insert into users values (null, #{userName}, #{age});")</span>
<span class="hljs-type">int</span> <span class="hljs-title function_">insertUser</span><span class="hljs-params">(<span class="hljs-meta">@Param("userName")</span> String userName,<span class="hljs-meta">@Param("age")</span> Integer age)</span>;
<span class="hljs-meta">@Select("select id as id, name as name, age as age from users where id=#{id}")</span>
UserEntity <span class="hljs-title function_">selectByUserId</span><span class="hljs-params">(<span class="hljs-meta">@Param("id")</span> Integer id)</span>;
}
</code></div></pre>
<h4><a id="423__422"></a>4.2.3 后端</h4>
<pre><div class="hljs"><code class="lang-java"><span class="hljs-comment">/*
* mybatis查询
* */</span>
<span class="hljs-comment">// http://127.0.0.1:8080/mybatisFindById?id=3</span>
<span class="hljs-meta">@RequestMapping("/mybatisFindById")</span>
<span class="hljs-keyword">public</span> UserEntity <span class="hljs-title function_">mybatisFindById</span><span class="hljs-params">(Integer id)</span>{
System.out.println(<span class="hljs-string">"============"</span>);
System.out.println(id);
<span class="hljs-keyword">return</span> userMapper.selectByUserId(id);
}
</code></div></pre>
<h2><a id="5__439"></a>5 整合热部署</h2>
留言