上篇博客我们聊了《JavaEE开发之SpringBoot整合MyBatis以及Thymeleaf模板引擎》,并且在之前我们也聊了《Swift3.0服务端开发(五) 记事本的开发(iOS端+服务端)》,在之前的案例中的服务端是我们使用了Swift3.0下的Perfect框架来实现的,本篇博客我们就用Spring Boot来做服务端,而iOS端我们不用改动。

在后端实现时,路由以及数据格式我们都采用之前的规则,但是我们要用Spring Boot来做。当然操作数据库时,我们就使用MyBatis来进行数据的持久化了。本篇我们就来看一下这个Spring Boot完整的工程。当然,本篇博客所设计的Spring Boot是比较简单的,但是用来练手可以了。

本篇博客所涉及的功能无非就是一些数据库表的CURD操作,没有什么多难的地方。接下来就来整体的看一下这个工程。

一、运行效果展示

下方这个Gif效果图,就是我们本篇博客所涉及的完整案例的运行效果。单从下方的效果,我们看不出与之前有什么效果,因为我们的iOS端没有改变。但是下方App的后台确实是使用Spring Boot来实现的。

第一个页面让用户输入用户名,如果用户名存在,那么就让用户输入密码进行登录,如果不存在就让用户进行注册。登录或者注册后直接进入App的首页,也就是笔记的列表页面。该列表页显示了当前用户发布的所有笔记,包括笔记的Title和创建时间。点进去是该笔记的详情页面,可以对其更改操作。在列表的右上角有一个添加按钮,可以用来添加新的笔记。

在列表页中,左滑单元格,会出现删除按钮,点击删除按钮,则对该篇笔记进行删除操作。具体运行效果如下所示。

  

二、MyBatis的Mapper实现

关于Spring Boot中如何引入和配置MyBatis,在此就不做过多赘述了,你可以参见上篇博客。当然,上述Demo的核心操作就是数据库的CURD操作,当然,我们使用的是Spring Boot下的Mybatis来进行的数据持久化,所以MyBatis的使用是比较重要的。本部分就详细的聊一下本篇博客所涉及的MyBatis的Mapper。下方先给出操作用户user表的Mapper, 然后在介绍操作内容content表的Mapper。

1. UserMapper的实现

下方代码段是UserMappper的具体实现,首先使用@Mapper注解将UserMapper接口声明为MyBatis的Mapper。然后在其中给出相应的操作声明。在UserMapper中主要给出了两个Select操作和一个Insert操作。

在执行Select时,使用了#{参数}来往SQL语句中传入相应的查询条件,使用了@Results()注解来声明表字段与数据Model的属性间的对应关系。如果没有指定,那么默认情况下表字段名就等于Model的属性名。查询语句返回的是含有相应Model的ArrayList。

我们使用@Insert()注解来指定插入语句,并且使用@Param注解和#{}来绑定参数。具体如下所示。

  

2、INoteContentMapper的实现

看完UserMapper后,我们来看一下INoteContentMapper的具体实现。INoteContentMapper就负责操作Content表。下方截图是INoteContentMapper具体实现,其中多了两个操作,一个是使用@Delete注解声明的删除操作,另一个是使用@Update注解声明的更新操作。下方的实现也是比较简单的在此就不做过多赘述了。

  

三、DAO层的创建

看完相关的Mapper接下来我们来看一下DAO层的实现,DAO即Data Access Object,主要是负责操作对象的。我们就以ContentDao为例。下方代码段就是ContentDao中的具体实现。在该类中被注入了INoteContentMapper类型的对象,我们可以使用该对象来操作数据库。

我们就以queryContent(String contentId)为例,该方法中就调用了相应Mapper对象的相应方法,根据内容的id来查询相应的内容。而该类中的方法,在获取到相应的对象信息后,对该对象进行了相关操作,并返回。具体代码如下所示。

  

四、Controller层的实现

DAO层实现完毕后,接下来我们就来实现我们的Controller层。当然,我们还是以Content的Controller层为例。因为我们的Controller是作为接口也就是API对外使用的,所以我们将ContentRestController使用@RestController进行注解,这样我们之间将返回的报文内容进行返回即可。下方代码片段就是我们的ContentRestController中的实现内容。

首先我们要注入ContentDao的对象,然后在相应的路由所对应的方法中来调用DAO中的相应的方法。虽然我们返回的是Map类型,但是Spring Boot会为我们自动的转换成Json格式的数据,所以访问该API返回的都是JSON格式的数据。

  

我们可以对“/contentList”路由进行访问,该路由需要提供一个userId作为查询参数,下方截图就是对userId=1的用户下的所有List进行的查询。

  

今天博客就先介绍到这儿吧,下方是本篇博客所涉及Demo的源码分享链接。

github分享链接:https://github.com/lizelu/SpringBootProject

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco }

JavaEE开发之记事本完整案例(SpringBoot + iOS端)的更多相关文章

  1. Swift3.0服务端开发(一) 完整示例概述及Perfect环境搭建与配置(服务端+iOS端)

    本篇博客算是一个开头,接下来会持续更新使用Swift3.0开发服务端相关的博客.当然,我们使用目前使用Swift开发服务端较为成熟的框架Perfect来实现.Perfect框架是加拿大一个创业团队开发 ...

  2. Swift3.0服务端开发(五) 记事本的开发(iOS端+服务端)

    前边以及陆陆续续的介绍了使用Swift3.0开发的服务端应用程序的Perfect框架.本篇博客就做一个阶段性的总结,做一个完整的实例,其实这个实例在<Swift3.0服务端开发(一)>这篇 ...

  3. 李洪强iOS开发之【零基础学习iOS开发】【01-前言】02-准备

    在上一讲中,介绍了什么是iOS开发.说简单一点,iOS开发,就是开发运行在iPhone或者iPad上的软件.这么一说完,应该有很多人就会产生一些疑惑,比如学习iOS开发是不是一定要买iPhone?需不 ...

  4. JavaEE开发基于Eclipse的环境搭建以及Maven Web App的创建

    本篇博客就完整的来聊一下如何在Eclipse中创建的Maven Project.本篇博客是JavaEE开发的开篇,也是基础.本篇博客的内容干货还是比较多的,而且比较实用,并且都是采用目前最新版本的工具 ...

  5. JavaEE开发之基于Eclipse的环境搭建以及Maven Web App的创建

    本篇博客就完整的来聊一下如何在Eclipse中创建的Maven Project.本篇博客是JavaEE开发的开篇,也是基础.本篇博客的内容干货还是比较多的,而且比较实用,并且都是采用目前最新版本的工具 ...

  6. 李洪强iOS开发之【零基础学习iOS开发】【01-前言】01-开篇

    从今天开始,我就开始更新[零基础学习iOS开发]这个专题.不管你是否涉足过IT领域,也不管你是理科生还是文科生,只要你对iOS开发感兴趣,都可以来阅读此专题.我尽量以通俗易懂的语言,让每个人都能够看懂 ...

  7. JavaEE开发使用Maven管理的SpringMVC工程

    前几篇博客已经陆陆续续的聊了一些Spring的东西,今天博客我们就来聊一下SpringMVC.SpringMVC目前在JavaEE开发中可谓占据一席之地,用起来也是比较顺手的.低耦合,高内聚,利用一些 ...

  8. iOS端IM开发从入门到填坑

      让App聊起来 IM开发从入门到填坑Demo IM的实现方式 拿来主义,使用第三方IM服务 IM的第三方服务商国内有很多,底层协议基本上都是基于TCP的,类似有网易云信.环信.融云.极光IM.Le ...

  9. Linux服务器oraclejdk与openjdk共存并配置JavaEE开发环境

    由于本人学业的需要,需要在linux中搭建JavaEE开发环境,与windows的同学协同开发. JDK 由于fedora默认使用openjdk,移除多多少少会出现点问题,由于很多开源软件默认使用到它 ...

随机推荐

  1. sass ruby环境 安装配置,使用sublime text3 中sass

    首先,你想要使用sass的话,就必须依赖于ruby环境.所以,你要下一个ruby.具体的链接应该是(http://rubyinstaller.org/downloads).下载相应的版本.- 下载好之 ...

  2. express创建网站

    Express 在初始化一个项目的时候需要指定模板引擎,默认支持Jade和ejs. 这里我们使用ejs模板引擎:(关于ejs的介绍可以先从百科里面了解一个大概)EJS是一个JavaScript模板库, ...

  3. 【C语言】模拟实现atoi函数

    atoi(表示 ascii to integer)是把字符串转换成整型数的一个函数. atoi()函数会扫描参数 nptr字符串,跳过前面的空白字符(例如空格,tab缩进等,可以通过isspace( ...

  4. POPTEST老李分享DOM解析XML之java

    POPTEST老李分享DOM解析XML之java   Java提供了两种XML解析器:树型解释器DOM(Document Object Model,文档对象模型),和流机制解析器SAX(Simple ...

  5. BloomFilter算法

    Bloom filter 是由 Howard Bloom 在 1970 年提出的二进制向量数据结构,它具有很好的空间和时间效率,被用来检测一个元素是不是集合中的一个成员.如果检测结果为是,该元素不一定 ...

  6. JavaScript引用是如何工作的

    原文链接:https://www.sitepoint.com/how-javascript-references-work/ 摘要:JavaScript中没有指针,并且JavaScript中的引用与我 ...

  7. less学习笔记(一)

    less的写法如下 .content { ul{ list-style: none; } li{ height: 25px; line-height: 25px; padding-left: 15px ...

  8. jquery-ul-li实现分页功能 转载仅供交流

    js文件代码: (function($){ $.fn.Pages = function(options){ var opts = $.extend({},$.fn.Pages.defaults, op ...

  9. NOIP2014D2T2寻找道路

    洛谷传送门 这道题可以把边都反着存一遍,从终点开始深搜,然后把到不了的点 和它们所指向的点都去掉. 最后在剩余的点里跑一遍spfa就可以了. --代码 #include <cstdio> ...

  10. 利用 Forcing InnoDB Recovery 特性解决 MySQL 重启失败的问题

    小明同学在本机上安装了 MySQL 5.7.17 配合项目进行开发,并且已经有了一部分重要数据.某天小明在开发的时候,需要出去一趟就直接把电脑关掉了,没有让 MySQL 正常关闭,重启 MySQL 的 ...