上篇博客我们聊了《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. 用Stax方式处理xml

    1.读取xml文件,首先用类加载器加载项目目录下的xml文件,从XMLInputFactory创建我所需要的XMLStreamReader,即得到了xml文件.根据XMLStreamConstant ...

  2. smm框架学习------smm框架整合实现登录功能(一)

    一.准备所需的jar包 1.1所需jar包 1.Spring框架jar包 2.Mybatis框架jar包 3.Spring的AOP事务jar包 4.Mybatis整合Spring中间件jar包 5.a ...

  3. Unity 3D Framework Designing(4)——设计可复用的SubView和SubViewModel(Part 1)

    『可复用』这个词相信大家都熟悉,通过『可复用』的组件,可以大大提高软件开发效率. 值得注意的事,当我们设计一个可复用的面向对象组件时,需要保证其独立性,也就是我们熟知的『高内聚,低耦合』原则. 组件化 ...

  4. Zookeeper-3.4.9 集群搭建

    这里用了三台主机,系统为CentOS7 1.修改hosts #vim /etc/hosts 172.50.0.31 node1 172.50.0.34 node2 172.50.0.37 node3 ...

  5. angular替代Jquery,常用方法支持

    1.angular.bind(self,fn.args);   切换作用域执行 2.angular.copy(source,[destination]);   拷贝和深度拷贝 3.angular.eq ...

  6. 关于oracle后导数据的一些小TIPS

    今天下午需要把一些数据导入到正式环境中,但是通过Excel拷贝进去行会错位,把excel的每一列的双击让其变为最宽即可解决该问题

  7. iOS最好用的引导页

    最近项目结束的时候又要改引导页,之前写的启动页改起来太麻烦了,所以就直接封装一个,功能可能还不是很完善,但是感觉用起来也比较方便,在这里和大家分享一下. 这是github的下载地址:https://g ...

  8. 第5章Zabbix自动化监控

    p.MsoNormal,li.MsoNormal,div.MsoNormal { margin: 0cm; margin-bottom: .0001pt; text-align: justify; t ...

  9. 读书笔记 effective c++ Item 43 了解如何访问模板化基类中的名字

    1. 问题的引入——派生类不会发现模板基类中的名字 假设我们需要写一个应用,使用它可以为不同的公司发送消息.消息可以以加密或者明文(未加密)的方式被发送.如果在编译阶段我们有足够的信息来确定哪个信息会 ...

  10. 老李秘技:LoadRunner支持参数文件极限是多大

    老李秘技:LoadRunner支持参数文件极限是多大   Controller不支持参数文件大于20m