JavaEE开发之SpringBoot整合MyBatis以及Thymeleaf模板引擎

上篇博客我们聊了《JavaEE开发之SpringBoot工程的开创、运转与配置》,从上篇博客的内容我们简单看出SpringBoot的便捷。本篇博客大家一而再在上篇博客的基本功上来看一下SpringBoot是如何引入和动用MyBatis和Thymeleaf的。在以前的博客中大家关系过Hibernate,今天博客所引入的Mybatis所饰演的角色与Hibernate类似,都是一套OLANDM框架,主要承担持久化的,也是将数据库中的数据直接照射为Model的框架。

而Thymeleaf就是一个模板引擎了,与前边我们聊得PHP中的斯马特y模板引擎类似。假设你们的Web工程是上下端分离的,那么就不必要Thymeleaf等模板引擎了。本篇博客要做的业务就是在SpringBoot工程中引入MyBatis,然后通过MyBatis所提供的投射方法以及注明来读取数据库中的音信。然后采用Thymeleaf模板在前者进行数量的显示。

大家以前在聊Swift开发服务端的情节,也等于Perfect框架时,用到了MySQL相关的东西。本篇博客大家就使用Perfect框架从前所操作的数据库就行了。关于Swift的Perfect框架的连锁内容,请移步于《斯威夫特中的服务端框架—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了。

  图片 1

在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>

 

 

二 、配置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框架时所使用的数据,本篇博客大家依旧对该数额开展操作。

  图片 2

依据上述cotent表中的字段,大家来创设该表所对应的model类。下方那几个Content类就是我们所制造的content表所对应的Model。具体如下所示。

  图片 3

 

 

4.创设映射接口

接下去我们来创建数量库表与Model直接的投射接口。在该接口中提供了数额与Model直接的映射关系,并且提供了相关的SQL操作。下方的ContentMapper接口就是我们创设的content表与ContentModel之间的炫耀关系。并且在该接口中的方法所对应的评释中,提供了对应的SQL操作。

在ContentMapper接口的query()方法中,该方式所对应的SQL语句是“select * from
content”,也等于查询全体content中的数据。@Results注明提供了多少库表的字段与Model的质量的照射关系。下方钦点了表字段”id”与”contentId”对应,字段名”create_time”与“createTime”属性相对应,而未指定的就是字段名与属性名一致。

queryById()就是包罗条件的查询艺术了。其参数就是询问的标准。通过@Param评释举行标准与参数的绑定。具体代码如下所示。

  图片 4

 

 

⑤ 、创立测试用的Controller

为了方便时期,大家就不创设DAO层了,就平素在Controller中来调用上述接口中的方法即可。下方那几个MyBatisTestController就是大家创立的用来测试上述操作的测试控制器。当然我们将该控制器申明为@RestController以便大家对其进展测试。然后利用@Autowired表明注入ContentMapper类型的靶子,我们得以由此该目的来操作上述接口中所对应的章程。queryContentById()方法,对应的是contentMapper中的queryById()方法,queryAll()方法对应的是Mapper中的query()方法,具体代码如下所示。

尘世大家平昔将赢拿到的Model恐怕Model数组举行重返,在Spring
Boot中,直接回到的Model会被映射成相应的JSON格式的多寡的,那几个稍后大家会直观的来看。

  图片 5

 

六 、访问上述路由

咱俩先拜访/queryContentById这一个路由,再拜访这么些路由时,大家要提供三个参数contentId。相当于用来询问数据的准绳。下方截图中的结果就是我们对contentId=6的规则查询的结果。

  图片 6

接下去我们来询问一下装有的数量,相当于造访queryAll路由。具体结果如下所示。

  图片 7

 

 

贰 、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>

 

二 、创设模板使用的Controller

进而,大家就来创造模板所对应的Controller,如下所示。下方大家如故拔取注入的ContentMapper对象来获取数据。然后将赢得的数目增进到model对象中,在抬高时,大家会为该数据对象钦赐3个参数名称,如下方的”contents”。然后重临模板页面即可,下方的“display”就是我们模板页面所在的文件名称。

  图片 8

 

三 、成立模板页面

下一场我们就该创立模板页面了,相当于那里的display.html。下方就是display.html页面的兼具情节。其中我们为数量的突显添加了有的css样式,并应用CDN引入了当前风靡版本的Bootstrap。下方带有“th:”前缀的质量就是Thymeleaf模板的价签。

第3采用“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>

 

肆 、访问上述路由

开创完显示用的模板后,接下去大家要做的业务就是要对其进展走访了。下方截图就是大家最终的拜访结果。

  图片 9

本篇博客就先到那儿吧,今后还会使用到MyBatis的此外故事情节,到时候再细说。

本篇博客所涉嫌代码的github地址:https://github.com/lizelu/SpringBootProject

 

相关文章