上篇博客我们聊了《JavaEE开发之SpringBoot工程的创始、运行与布局》,从上篇博客的始末大家不难看出SpringBoot的省心。本篇博客大家继续在上篇博客的根底上来看一下SpringBoot是怎么引入和利用MyBatis和Thymeleaf的。在后边的博客中我们提到过Hibernate,前天博客所引入的Mybatis所饰演的角色与Hibernate类似,都是一套ORM框架,首要担负持久化的,也是将数据库中的数据直接照射为Model的框架。
而Thymeleaf就是一个模板引擎了,与前边大家聊得PHP中的Smarty模板引擎类似。假使你们的Web工程是上下端分离的,那么就富余Thymeleaf等模板引擎了。本篇博客要做的工作就是在SpringBoot工程中引入MyBatis,然后经过MyBatis所提供的映照方法以及注脚来读取数据库中的消息。然后拔取Thymeleaf模板在前者举办数据的突显。
我们事先在聊斯维夫特开发服务端的始末,也就是Perfect框架时,用到了MySQL相关的事物。本篇博客大家就应用Perfect框架在此之前所操作的数据库就行了。关于斯威夫特(Swift)的Perfect框架的连带内容,请移步于《斯威夫特(Swift)中的服务端框架—Perfect》连串博客。因为前面聊过MySQL相关的东西了,本篇博客就不做过多废话了。关于MySQL的设置,请参见往日宣布的博客《macOS
Sierra安装Apache2.4+PHP7.0+MySQL5.7.16》。本篇博客,大家就把重大放到Spring
Boot中的MyBatis和Thymeleaf上。
一、MyBatis的引入与运用
1.配置pom文件
率先我们来看一下什么在Spring Boot中引入MyBatis。首先咱们在http://mvnrepository.com/中找到Mybatis
Spring Boot
Starter相关的Mvn仓库连接。如下所示,从人间截图中,我们不难看出,方今MyBatis Spring Boot
Starter的风靡版本是1.2.0。可是本篇博客中我们接纳的是1.1.1本子,因为自己引入1.2.0后,我的SpringBoot工程根本启动不了,于是换成1.1.1本子就OK了。
在pom.xml添加上下方的部署项,引入mybatis-spring-boot-starter和mysql-connector-java相关配置。mysql-connector-java顾明思议,就是连续MySQL数据库使用的依赖包。pom.xml中的配置如下。
<!-- https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.1.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
</dependency>
2、配置MySQL数据库连接
因为我们运用的是Spring Boot引入的MyBatis, Mybatis Spring Boot
Starter会为我们做过多自动化的安排,比如SqlSessionFactory的成立等等。需要我们做的就是在application.properties文件中开展数据库连接的相关安排即可。下方就是咱们在配置文件中加上的接连数据库的连带消息。紧要安排了数据库连接的门道,数据库的用户名以及密码,数据库的驱动。
#Config MySQL Connect Info
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/perfect_note
spring.datasource.username=root
spring.datasource.password=admin!@#
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
3、创建Model类
接下去我们就来制造数据库中的相应数额所要映射的数目Model类。接下来大家就来操作perfect_note数据库中的content表,如下所示。下方数据库及数据库中的数据是我们事先在聊Perfect框架时所选择的数目,本篇博客我们仍旧对该多少开展操作。
按照上述cotent表中的字段,我们来制造该表所对应的model类。下方这一个Content类就是我们所开创的content表所对应的Model。具体如下所示。
4.创办映射接口
接下去我们来创立数量库表与Model直接的炫耀接口。在该接口中提供了数据与Model直接的投射关系,并且提供了有关的SQL操作。下方的ContentMapper接口就是大家制造的content表与ContentModel之间的照耀关系。并且在该接口中的方法所对应的笺注中,提供了相应的SQL操作。
在ContentMapper接口的query()方法中,该方法所对应的SQL语句是“select * from
content”,也就是询问所有content中的数据。@Results声明提供了数量库表的字段与Model的习性的炫耀关系。下方指定了表字段”id”与”contentId”对应,字段名”create_time”与“create提姆e”属性相呼应,而未指定的就是字段名与属性名一致。
queryById()就是带有条件的询问办法了。其参数就是查询的口径。通过@Param声明举办标准化与参数的绑定。具体代码如下所示。
5、创设测试用的Controller
为了便利期间,我们就不创制DAO层了,就径直在Controller中来调用上述接口中的方法即可。下方那么些MyBatisTestController就是我们成立的用来测试上述操作的测试控制器。当然我们将该控制器阐明为@RestController以便大家对其展开测试。然后利用@Autowired注明注入ContentMapper类型的靶子,我们得以经过该对象来操作上述接口中所对应的艺术。queryContentById()方法,对应的是contentMapper中的queryById()方法,queryAll()方法对应的是Mapper中的query()方法,具体代码如下所示。
人世间我们一贯将赢拿到的Model或者Model数组举行再次回到,在Spring
Boot中,直接再次回到的Model会被映射成相应的JSON格式的多寡的,这多少个稍后大家会直观的看来。
6、访问上述路由
俺们先拜访/queryContentById这多少个路由,再拜访那么些路由时,我们要提供一个参数contentId。也就是用来询问数据的原则。下方截图中的结果就是咱们对contentId=6的尺码查询的结果。
接下去大家来询问一下富有的数目,也就是造访queryAll路由。具体结果如下所示。
二、Thymeleaf模板的引入与行使
上边引入MyBatis算是妥了,将来的博客中还会连续对MyBatis的相关东西举行介绍。接下来大家就引入Thymeleaf模板,然后展现大家利用MyBatis读取到的连带数据。下方我们就来看一下在Spring Boot中是咋样整合Thymeleaf模板的
1、配置pom.xml文件
在pom.xml中添加Thymeleaf在Spring Boot中相关的库,具体如下所示:
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-thymeleaf -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
<version>1.5.2.RELEASE</version>
</dependency>
2、创设模板使用的Controller
紧接着,我们就来创建模板所对应的Controller,如下所示。下方我们依旧接纳注入的ContentMapper对象来获取数据。然后将拿到的数额增长到model对象中,在累加时,我们会为该数量对象指定一个参数名称,如下方的”contents”。然后重返模板页面即可,下方的“display”就是大家模板页面所在的文件名称。
3、创造模板页面
然后大家就该创立模板页面了,也就是这里的display.html。下方就是display.html页面的富有情节。其中大家为数量的来得添加了有些css样式,并接纳CDN引入了眼前新型版本的Bootstrap。下方带有“th:”前缀的性能就是Thymeleaf模板的价签。
首先使用“th:if=”${not
#lists.isEmpty(contents)}””来判定contents属性所对应的值是否为空,如若不为空,则执行标签中的内容。然后利用th:if=”${not
#lists.isEmpty(contents)}”来遍历contents中的内容,类似于while循环。通过th:each=”content:${contents}”取出每一项的多寡。通过th:text=”${content.contentId}”取出某个属性的值。具体内容如下所示。
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta content="text/html;charset=UTF-8"/>
<!-- 最新版本的 Bootstrap 核心 CSS 文件 -->
<link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"/>
<!-- 最新的 Bootstrap 核心 JavaScript 文件 -->
<script src="https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
<title>Content</title>
</head>
<body>
<div class="center-block" style="width:800px" th:if="${not #lists.isEmpty(contents)}">
<div class="row" style="height:50px; background-color: #000000; color: #ffffff">
<div class="col-md-1">CotentId</div>
<div class="col-md-2">Title</div>
<div class="col-md-5">Cotent</div>
<div class="col-md-1">UserId</div>
<div class="col-md-2">CreateTime</div>
</div>
<div th:if="${not #lists.isEmpty(contents)}">
<div class="row" th:each="content:${contents}" style="height:40px;background-color: #000000; margin-top: 1px; color: #ffffff">
<div class="col-md-1"></div>
<div class="col-md-2"></div>
<div class="col-md-5"></div>
<div class="col-md-1"></div>
<div class="col-md-2"></div>
</div>
</div>
</div>
</body>
</html>
4、访问上述路由
创建完体现用的沙盘后,接下去我们要做的政工就是要对其举行访问了。下方截图就是大家最后的拜会结果。
本篇博客就先到这时候吧,将来还会采纳到MyBatis的其他内容,到时候再细说。
本篇博客所涉及代码的github地址:https://github.com/lizelu/SpringBootProject