上篇博客我们聊了《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. 深入理解Stream流水线

    前面我们已经学会如何使用Stream API,用起来真的很爽,但简洁的方法下面似乎隐藏着无尽的秘密,如此强大的API是如何实现的呢?Pipeline是怎么执行的,每次方法调用都会导致一次迭代吗?自动并 ...

  2. Meta http-equiv属性详解

    http-equiv顾名思义,相当于http的文件头作用,它可以向浏览器传回一些有用的信息,以帮助正确和精确地显示网页内容,与之对应的属性值为content,content中的内容其实就是各个参数的变 ...

  3. 抛弃vue-resource拥抱axios

    vue-resource用法 import Vue from 'vue' import VueResource from 'vue-resource' Vue.use(VueResource) 是不是 ...

  4. 为什么使用 Containjs 模块化管理工具效率高?

    为什么使用 Containjs 模块化管理工具效率高? 要说明这个首先得说明一下,Containjs 的模块加载原理. 第一步,首先使用异步加载(ajax)在 js 目录下的 app.js 入口模块( ...

  5. 【转】ActionScript,Flash,Flash/Flex Builder,FlashPlayer,AIR,swf,swc,swz之间的区别

    原文链接:http://zengrong.net/post/1295.htm ActionScript ActionScript通常简称为AS,它是Flash平台的语言.AS编写的程序,最终可以编译成 ...

  6. linux下PHP 环境搭建

    linux下环境搭建   第一步 安装Apache2 sudo apt-get install apache2   第二步 安装PHP模块 sudo apt-get install php5   第三 ...

  7. 转接口IC GM7122:BT656转CVBS芯片 视频编码电路

    1 概述    视频编码电路主要实现接收8位CCIR656格式的YUV数据,(例如MPEG解码数据),并编码成CVBS信号,经过D/A转换后输出.基本的编码功能包括副载波产生,色差信号调制,同步信号内 ...

  8. 【Java进阶】——初识数据库连接池

    [简介] 数据库连接池:程序启动时建立足够的数据库连接,并将这些连接组成一个连接池,由程序动态地对池中的链接进行申请,使用,释放. 相比之前的程序连接,减少了数据库的打开关闭次数,从而减少了程序响应的 ...

  9. 4月5日--课堂笔记--JS内置对象

    JavaScript 4.5 一.    JS内置对象 1.数组Array a)创建语法1:var arr=new Array(参数); i.       没有参数:创建一个初始容量为0的数组 ii. ...

  10. C# 超高速高性能写日志 代码开源

    1.需求 需求很简单,就是在C#开发中高速写日志.比如在高并发,高流量的地方需要写日志.我们知道程序在操作磁盘时是比较耗时的,所以我们把日志写到磁盘上会有一定的时间耗在上面,这些并不是我们想看到的. ...